猿问

JS 异步队列

有三个执行函数,如何通过一个异步队列执行函数,使其能按照参数顺序依次输出?

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


慕莱坞森
浏览 534回答 2
2回答

手掌心

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         });

天涯尽头无女友

借用上面Promisefunction doWork(list) {    // TODO     return list.reduce((acc, cur) => acc.then(cur)); }
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答