收藏
回答

Promise问题

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

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


然后调用


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


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


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








最后一次编辑于  2018-01-24  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

4 个回答

  • 俊宁
    俊宁
    2018-06-05
    推荐我开源的  https://github.com/youngjuning/wxPromise ,支持小程序API promise化、ES7 async await 等函数、ES8 finally 、一揽子正则验证和一些解决方案函数。开发不易,喜欢的话给一个星星  
    2018-06-05
    赞同
    回复
  • Mr. ♥
    Mr. ♥
    2018-01-29

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


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

    2018-01-29
    赞同
    回复
  • 吴剑波
    吴剑波
    2018-01-25

    首先 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


    2018-01-25
    赞同
    回复
  • 赵青山
    赵青山
    2018-01-25

    感觉,你在瞎写

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

    2018-01-25
    赞同
    回复