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);
});
}