我仍在尝试使用 JQuery 的 Deferred 对象来解决问题,并且正在为一个特定的问题挠头。在下面的代码中,我最初尝试链接deferred.then()
但它从未成功。所有三个函数同时执行。只有在我的同事向我指出该pipe
功能之后,事情才落实到位。问题是,为什么pipe()
有效,但不是then()
?
var otherDefer = function(msg){return function(){return testDefer(msg)}};
var there = otherDefer("there,");
var guy = otherDefer("guy.");
function testDefer(msg) {
var deferred = $.Deferred();
pretendAjaxCall( function() {
$('<li>'+msg+'</li>').appendTo('#msgOut');
deferred.resolve();
});
return deferred.promise();
}
function pretendAjaxCall(callback) {
setTimeout(callback,1500);
}
$.when(testDefer("Hi")).pipe(there).then(guy);
我也尝试过return deferred
,而不是return deferred.promise()
在使用when().then().then()
.
上面代码的 jsFiddle:http: //jsfiddle.net/eterpstra/yGu2d/