Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用链接承诺。何时_Javascript_Jquery_Asynchronous_Jquery Chaining - Fatal编程技术网

Javascript 使用链接承诺。何时

Javascript 使用链接承诺。何时,javascript,jquery,asynchronous,jquery-chaining,Javascript,Jquery,Asynchronous,Jquery Chaining,我有两种方法返回承诺(用非异步解析缩短) 然后我有了另一种方法,把这些 function chainer () { return methodA().then(function(result) { return methodB(result); }); } 然后我有另一个方法,它调用 function main () { $.when(chainer()).done(function (answer) { console.log(answ

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

然后我有了另一种方法,把这些

function chainer () {
    return methodA().then(function(result) {
        return methodB(result);
    });
}
然后我有另一个方法,它调用

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

控制台上打印的答案是“A”,而不是我预期的“B”!为什么会这样?我怎样才能得到methodB的结果,因为这个方法依赖于methodA

谢谢
R

发现问题是由于jQuery中的错误造成的。我们使用的是1.7.2版,然后实现有一个bug。您仍然需要使用不推荐使用的.pipe方法。在以后的版本中,这两种方法都能正常工作。

“打印到控制台上的答案是‘A’,而不是‘B’”——打印出来的是
B
。顺便说一句,您的
chainer
实现可能看起来像
returnmethoda()而不是.Hmmm,所以它是。。。一定是出了什么问题……顺便说一句,你应该简化为
methodA()。然后(methodB)
chainer()。完成(…)
我有其他参数输入methodB,所以不能简化它。够疯狂的是,它仍然返回methodA的结果。我简化了它,就像我在这里发布的一样,它仍然返回一个。。。它在做我的头。。。甚至有另一个人在研究它,我们将它与JSFIDLE示例进行了比较,它们是相同的。
function main () {
    $.when(chainer()).done(function (answer) {
        console.log(answer);
    });
}