在 javascript 中编写一个库,可以 运行 顺序执行异步函数

Write a library in javascript that can run asynchronous functions sequentially

我想在 javascript 中编写一个库,可以 运行 代码如下:

seq.next(function(done){
  setTimeout(done,3000);
}).next(function(done){
  setTimeout(function(){
    console.log("hello");
    done();
  },4000);
}).end(); //.next morever

其实我想写一个可以按顺序(顺序)执行异步函数的库。每个异步函数都应该 运行 "done" 函数结束。

谁能帮帮我。非常感谢!

图书馆是:

var seq = (function () {

var myarray = [];
var next = function (fn) {
    myarray.push({
        fn: fn 
    });
    // Return the instance for chaining
    return this;
};

var end = function () {
    var allFns = myarray;

    (function recursive(index) {
        var currentItem = allFns[index];


        // If end of queue, break
        if (!currentItem)
            return;

        currentItem.fn.call(this, function () {
            // Splice off this function from the main Queue
            myarray.splice(myarray.indexOf(currentItem), 1);
            // Call the next function
            recursive(index);
        });
    }(0));
    return this;
}

return {
    next: next,
    end: end
};
}());

这个库的使用是这样的:

seq.next(function (done) {
            setTimeout(done, 4000);
        }).next(function (done) {
            console.log("hello");
            done();
        }).next(function (done) {
            setTimeout(function () {
                console.log('World!');
                done();
            }, 3000);
        }).next(function (done) {
            setTimeout(function () {
                console.log("OK");
                done();
            }, 2000);
        }).end();