有三个执行函数,如何通过一个异步队列执行函数,使其能按照参数顺序依次输出?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 });

天涯尽头无女友
TA贡献1831条经验 获得超9个赞
借用上面Promise
function doWork(list) { // TODO return list.reduce((acc, cur) => acc.then(cur)); }
添加回答
举报
0/150
提交
取消