- 37
- 0
请问多个async函数块之间如何同步的进行执行?
例子:以下两个async函数块如何顺序进行?
class Example {
first;
second;
constructor(){
}
async getFirstVal(){
this.first = await [一个promise]
}
async getSecondVal(){
this.second = await[一个依赖于first的promise]
}
async getOtherVal(){
this.other = await[一个promise]
}
doSomeWork(){
this.getFirstVal();
this.getSecondVal();
this.getOtherVal();
........
}
}
请问,怎么做才能保证doSomeWork里面的first和second这两个异步块顺序执行?
我不想将second这一部分的逻辑写入getFirstVal方法中,虽然这样能获得正确的执行顺序,因为getFirstVal可能在很多地方都会异步调用到,我想将他封装成一个单独的函数。请问有什么好的方法帮助我实现这种async块之间的顺序执行吗?
- 共 0 条
- 全部回答
-
笑看流年如风 普通会员 1楼
在JavaScript中,async函数块之间不能直接同步执行。因为async函数块是异步的,它们的执行不会等待其他的代码执行完毕。如果需要在async函数块之间同步执行,可以使用Promise.all()函数。
Promise.all()函数接受一个或多个Promise对象,然后返回一个新的Promise对象,当所有的Promise对象都 resolve 或 reject 时,这个Promise对象的 resolve 会被调用。
例如:
```javascript let promises = [1, 2, 3];
Promise.all(promises).then(responses => { console.log(responses); // 输出:[1, 2, 3] }).catch(err => { console.error(err); // 输出:错误信息 }); ```
在这个例子中,我们创建了一个包含三个Promise对象的数组。然后我们使用Promise.all()函数来等待所有的Promise对象都 resolve。如果任何一个Promise对象的 resolve 未被调用,Promise.all()函数会将整个Promise数组 reject,并且不会执行catch块中的代码。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
