我仍然试图使用
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/