嵌套两个以上任务的回调

Nesting callbacks for more than two tasks

可以使用回调来确定两个任务的顺序,如下所示。

a(b);

function a(callback) {
   // do something
   callback();
}

function b() {
   // do next
}

Fiddle

先做a(),再做b()

我想串联 两个以上的任务。 由于我正在处理相当大的功能,所以我正在寻找类似的东西:

a(b(c));

先做a(),再做b(),再做c()。 但是我没有成功。参见 Fiddle

是否有一种简单的方法可以做到这一点,也许不需要 Promises?

您正在立即调用 b,而不是将回调传递给 a。您需要使用函数表达式:

a(function(aResult) {
    b(c);
});

当然,您可以通过从所有函数返回闭包来避免这些:

function a(callback) {
    return function(args) {
        // do something
        if (callback) callback(res);
    };
}
function b(callback) {
    return function(aResult) {
        // do next
        if (callback) callback(res);
    };
}
function c(callback) {
    return function(bResult) {
        // do next
        if (callback) callback(res);
    };
}

你可以这样称呼它:

a(b(c())();

(这才叫纯continuation passing style)