小程序
小游戏
企业微信
微信支付
扫描小程序码分享
在用promise的时个,为什么还是不按顺序执行?
我定义了三个函数读取不同的照片
然后调用
如果按流程来,应该输出结果的顺序是
但有时候还是会出现顺序不同的情况
请问是我写的方式不对,还是什么原因呢?
4 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
1楼 @赵子龙 的写法是对的。
P.S. 不会简写的时候就不要瞎简写……
首先 then 的参数是一个函数,而你这里写的是 this.downImgPro3(url) 的返回值,所以请求1、 2 和 3 应该是一起发出的(因为给 .then 传参数时会执行一次求值操作)
建议使用 async/await 来写这种顺序执行的异步操作,可以重构为:
await this.downImgPro2(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);
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
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);