实现异步队列
实现异步队列函数,使其能够按照参数顺序依次输出
function fun1(cb) {
setTimeout(function() {
console.log('fun1');
cb();
}, 3000)
}
function fun2(cb) {
setTimeout(function() {
console.log('fun2');
cb();
}, 1000)
}
function fun3(cb) {
setTimeout(function() {
console.log('fun3');
cb();
}, 2000)
}
function euque(list) {
// 填充相应代码
}
euque([fun1, fun2, fun3]) // 输出 fun1, fun2, fun3
解答
function fun1(cb) {
setTimeout(function() {
console.log('fun1');
cb();
}, 3000)
}
function fun2(cb) {
setTimeout(function() {
console.log('fun2');
cb();
}, 1000)
}
function fun3(cb) {
setTimeout(function() {
console.log('fun3');
cb();
}, 2000)
}
function euque(list) {
const compose = list.reduceRight(function(a, b) {
return () => b(a);
}, () => {});
compose();
}
euque([fun1, fun2, fun3]) // 输出 fun1, fun2, fun3