我仍然试图使用
JQuery的Deferred对象来解决问题,并且正在抓住一个特定的问题.在下面的代码中,我最初尝试链接deferred.then()但它从未起作用.所有三个功能一次执行.只有在我的同事向我指出管道功能后,事情就会落到实处.问题是,为什么pipe()工作,但不是那么()?
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);
当使用when().then().then()时,我也尝试使用return deferred而不是return deferred.promise().
上面代码的jsFiddle:http://jsfiddle.net/eterpstra/yGu2d/