为了账号安全,请及时绑定邮箱和手机立即绑定

Promise 执行顺序问题。

Promise 执行顺序问题。

慕桂英546537 2018-12-27 22:15:26
我参考这个地址写了一些Promise的demo,https://developers.google.com...当我学到到这个例子时,我写了一个类似的demo:https://jsfiddle.net/weisiwu/...不过结果的执行顺序和给出的例子不一样,请问如何修改代码才能达到同时发起多个请求,但是返回的结果仍然按顺返回(不是Promise.all那种全部完成后才返回的,而是有完成的且该完成项前面的也都完成了就返回该项这种)?
查看完整描述

1 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

改成这样就行了

var timeline = [

            function() {

              return new Promise(function(resolve, reject) {

                setTimeout(function() {

                  resolve('task5<br>');

                }, 1000);

              });

            },

            function() {

              return new Promise(function(resolve, reject) {

                setTimeout(function() {

                  resolve('task6<br>');

                }, 1500);

              });

            },

            function() {

              return new Promise(function(resolve, reject) {

                setTimeout(function() {

                  resolve('task7<br>');

                }, 2000);

              });

            },

            function() {

              return new Promise(function(resolve, reject) {

                setTimeout(function() {

                  resolve('task8<br>');

                }, 800);

              });

            }

          ];


          // 完成后立刻输出结果,但是按照顺序输出

          timeline.map(function(val) {

            return val();

          }).reduce(function(init, req) {

            return init.then(function() {

              return req;

            }).then(function(result){

                document.writeln(result)

            })

          }, Promise.resolve());


查看完整回答
反对 回复 2019-01-13
  • 1 回答
  • 0 关注
  • 627 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信