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

请问多个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块之间的顺序执行吗?
繁星点点滴滴
浏览 301回答 2
2回答

一只甜甜圈

asyncdoSomeWork(){awaitthis.getFirstVal();this.getSecondVal();this.getOtherVal();}这样可以吗?优雅的方案也没太研究过,但是你可以看看Rxjs或者async这些库,能得到比较好的思路

千巷猫影

functionasync2(){console.log('async2');}asyncfunctionasync1(resolve){awaitsetTimeout(function(){console.log("settimeout");//当我认定async1完成后才开始async2resolve()},0);}newPromise(function(resolve){async1(resolve)}).then(function(){async2()});或者newPromise(function(resolve){async1()resolve()}).then(function(){async2()});
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript