请问多个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这些库,能得到比较好的思路
千巷猫影
TA贡献1829条经验 获得超7个赞
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()});
添加回答
举报
0/150
提交
取消