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

JS 异步队列

JS 异步队列

慕莱坞森 2019-03-02 09:18:31
有三个执行函数,如何通过一个异步队列执行函数,使其能按照参数顺序依次输出?function f1() {   setTimeout(function() {    console.log('f1')   }, 300) }function f2() {   setTimeout(function() {    console.log('f2')   }, 100) }function f3() {   setTimeout(function() {    console.log('f3')   }, 200) }function doWork(list) {    // TODO} doWork([f1, f2, f3])// 期待结果: f1 f2 f3
查看完整描述

2 回答

?
手掌心

TA贡献1942条经验 获得超3个赞

function f1() {              return new Promise(function (resolve, reject) {
                setTimeout(function () {
                      resolve('f1');
                }, 300);
              });
        };        // 异步函数b
        function f2(data) {              return new Promise(function (resolve, reject) {
                setTimeout(function () {
                     resolve(data + 'f2');
                }, 100);
              });
        };        // 异步函数c
        function f3 (data) {              return new Promise(function (resolve, reject) {
                setTimeout(function () {
                      resolve(data + 'f3');
                }, 200);
              });
        };
        f1().then(function (data) {            return f2(data);
        }).then(function (data) {            return f3(data);
        }).then(function (data) {            console.log(data);// abc
        });


查看完整回答
反对 回复 2019-03-02
?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

借用上面Promise

function doWork(list) {    // TODO
    return list.reduce((acc, cur) => acc.then(cur));
}


查看完整回答
反对 回复 2019-03-02
  • 2 回答
  • 0 关注
  • 533 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号