Promise问题
发布于 6 年前 作者 tao48 10989 次浏览 来自 问答

在用promise的时个,为什么还是不按顺序执行?

我定义了三个函数读取不同的照片

然后调用

如果按流程来,应该输出结果的顺序是

但有时候还是会出现顺序不同的情况

请问是我写的方式不对,还是什么原因呢?

4 回复

推荐我开源的  https://github.com/youngjuning/wxPromise ,支持小程序API promise化、ES7 async await 等函数、ES8 finally 、一揽子正则验证和一些解决方案函数。开发不易,喜欢的话给一个星星  

1楼 @赵子龙 的写法是对的。

P.S. 不会简写的时候就不要瞎简写……

首先 then 的参数是一个函数,而你这里写的是 this.downImgPro3(url) 的返回值,所以请求1、 2 和 3 应该是一起发出的(因为给 .then 传参数时会执行一次求值操作)

建议使用 async/await 来写这种顺序执行的异步操作,可以重构为:

await this.downImgPro2(url);

await this.downImgPro3(url);

await this.downImgPro3(url);

参考 MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function

感觉,你在瞎写

this.downImgPro2().then(()=>this.downImgPro3(url)).then(this.downImgPro);

回到顶部