如何按顺序调用 javascript 具有回调 运行 的方法数组?

How to call javascript array of methods having callbacks to run sequentially?

我有以下方法可以顺序调用。
请注意,超时是不同的,因此默认情况下它将 运行 基于超时。

function asyncTask1(done) {
  setTimeout(() => {
    console.log('task 1 done');
    done(1);
  }, 500);
}
function asyncTask2(done) {
  setTimeout(() => {
    console.log('task 2 done');
    done(2);
  }, 400);
}
function asyncTask3(done) {
  setTimeout(() => {
    console.log('task 3 done');
    done(3);
  }, 300);
}

function sequential(tasks = []) {

}
 sequential(tasks);

你可以递归地做:

function sequential([first, ...last], done) {
  if (!first) done();
  else first(() => sequential(last, done);
}

这是一个非常有用的回复,但我花了一些时间将它们放在一起。这是正在使用的函数

function done() {
    console.log("DONE")
} 

var callbacks = [
    function callback1(next) {
        console.log("callback1")
        next()
    },
    function callback2(next) {
        console.log("callback2")
        next()
    },
    function callback3(next) {
        console.log("callback3")
        next()
    },
    function callback4(next) {
        console.log("callback4")
        next()
    },
    function callback5(next) {
        console.log("callback5")
        next()
    }
]

function sequential([first, ...last], done) {   
    if (!first) 
        done();
    else
        first(() => {sequential(last,done);})
}

//And call it. 
sequential(callbacks, done);