在用promise的时个,为什么还是不按顺序执行?
我定义了三个函数读取不同的照片
然后调用
如果按流程来,应该输出结果的顺序是
但有时候还是会出现顺序不同的情况
请问是我写的方式不对,还是什么原因呢?
推荐我开源的 https://github.com/youngjuning/wxPromise ,支持小程序API promise化、ES7 async await 等函数、ES8 finally 、一揽子正则验证和一些解决方案函数。开发不易,喜欢的话给一个星星
首先 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