Q和承诺链接

时间:2014-11-21 09:19:08

标签: node.js promise q chaining

假设A()返回已解决的承诺并转到B()。 但是,在某些情况下,我需要B()完成而不执行next then()(我不想进入C()。我可以在B()方法中使用defered.reject()但它确实如此似乎不对。

var p = pull(target)
.then(function (data) {
    return A();
})
.then(function (data) {
    return B();
})
.then(function (data) {
    return C();
})

任何提示?

2 个答案:

答案 0 :(得分:5)

使用promises进行分支的方式与没有它们的方式相同 - 主要是if条件:

var p = pull(target)
.then(A).then(B)
.then(function (data) {
    if(data) return C(); // assuming B's resolution value is a boolean
});

答案 1 :(得分:0)

如何将它包装在同一方法中?

 var p = pull(target)
            .then(function(data) {
                return A();
            })
            .then(function(data) {
                var result = B();
                if (!result)
                    return C()
                return result;
            })