嵌套两个以上任务的回调

时间:2015-03-28 16:16:48

标签: javascript node.js asynchronous callback

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

a(b);

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

function b() {
   // do next
}

请参阅Fiddle

先做a(),然后做b()

我想连接两个以上的任务。 当我处理相当大的功能时,我正在寻找类似的东西:

a(b(c));

首先执行a(),然后执行b(),然后执行c()。 但是我没有成功。见Fiddle

有没有一种简单的方法可以这样做,也许不需要Promise?

1 个答案:

答案 0 :(得分:1)

您立即呼叫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