为了账号安全,请及时绑定邮箱和手机立即绑定

async函数块之间如何同步执行?

async函数块之间如何同步执行?

繁星点点滴滴 2019-05-13 13:41:26
请问多个async函数块之间如何同步的进行执行?例子:以下两个async函数块如何顺序进行?classExample{first;second;constructor(){}asyncgetFirstVal(){this.first=await[一个promise]}asyncgetSecondVal(){this.second=await[一个依赖于first的promise]}asyncgetOtherVal(){this.other=await[一个promise]}doSomeWork(){this.getFirstVal();this.getSecondVal();this.getOtherVal();........}}请问,怎么做才能保证doSomeWork里面的first和second这两个异步块顺序执行?我不想将second这一部分的逻辑写入getFirstVal方法中,虽然这样能获得正确的执行顺序,因为getFirstVal可能在很多地方都会异步调用到,我想将他封装成一个单独的函数。请问有什么好的方法帮助我实现这种async块之间的顺序执行吗?
查看完整描述

2 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

asyncdoSomeWork(){
awaitthis.getFirstVal();
this.getSecondVal();
this.getOtherVal();
}
这样可以吗?优雅的方案也没太研究过,但是你可以看看Rxjs或者async这些库,能得到比较好的思路
                            
查看完整回答
反对 回复 2019-05-13
?
千巷猫影

TA贡献1829条经验 获得超7个赞

functionasync2(){
console.log('async2');
}
asyncfunctionasync1(resolve){
awaitsetTimeout(function(){
console.log("settimeout");
//当我认定async1完成后才开始async2
resolve()
},0);
}
newPromise(function(resolve){
async1(resolve)
}).then(function(){
async2()
});
或者
newPromise(function(resolve){
async1()
resolve()
}).then(function(){
async2()
});
                            
查看完整回答
反对 回复 2019-05-13
  • 2 回答
  • 0 关注
  • 300 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信