将链式承诺与 .when 一起使用



我有 2 种返回承诺的方法(用非异步解析缩短)

function methodA () {
    var d = $.Deferred();
    d.resolve('A');
    return d.promise();
}
function methodB (dependency) {
    var d = $.Deferred();
    // dependency would be used here
    d.resolve('B');
    return d.promise();
}

然后我有另一种方法可以链接这些

function chainer () {
    return methodA().then(function(result) {
        return methodB(result);
    });
}

然后我有另一个方法在这个链器上调用 .when

function main () {
    $.when(chainer()).done(function (answer) {
        console.log(answer);
    });
}

打印到控制台的答案是"A",而不是我预期的"B"!这是为什么呢?以及我如何获得方法 B 的结果,因为此方法依赖于方法 A。

谢谢R

发现问题是由于jQuery中的一个错误。我们使用版本 1.7.2,.then 实现有一个错误。您仍需要使用已弃用的 .pipe 方法。在更高版本中,两者都按预期工作。

最新更新