编辑代码

// 实现一个run方法,使得run(fucArr)能顺序输出123

const fucArr = [
    next => { setTimeout(() => { console.log(1); next() }, 300)},
    next => { setTimeout(() => { console.log(2); next() }, 200)},
    next => { setTimeout(() => { console.log(3); next() }, 100)}
]

// 递归
// var run = (arr) => {
//     if (arr.length === 0) return;
//     arr[0](() => run(arr.slice(1)));
// };



// 递归变循环
var run = (arr) => {
    const trigger = () => {
        if (arr.length === 0) return;
        arr.shift()();
    };
    arr = arr.map((fn) => {
        return () => fn(trigger);
    });

    trigger();
};



run(fucArr);