比如我有三个promise方法,A、B、C,按照promise原理,是先执行A接着B最后C,如果我想让C在B之前执行,如何做呢?
多个没关关联的 Promise 之间本身是没有顺序的。
如果需要顺序,可以通过 Promise 对象的 .then()
来指定该 Promise 完成之后进行什么操作,包括发起另一个 Promise。
startPromiseA().then(() => startPromiseC()).then(() => startPromiseB());
由于 .then()
的处理在步骤较多的时候看起来比较难受,所以可以使用 await
来简化代码
await startPromiseA();
await startPromiseC();
await startPromiseB();
10 回答11.7k 阅读
2 回答3.2k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
3 回答839 阅读✓ 已解决
3 回答1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
本质上promise只是一种异步的描述,并不期望你掌握执行的顺序的。
如果你想要掌控顺序 就需要调整成同步的操作。
例如。
await C();await B();
根据额外补充需求中的 三个函数不在同一个文件中的情况。可以增加调度器(以EvenBus举例),转交控制权到调度器。在异步函数回调中触发事件传递执行函数。在调度器中编写具体的调整顺序的逻辑。