私はまだJQueryのDeferredオブジェクトを使用して頭を包み込もうとしており、1つの特定の問題で頭を悩ませています。次のコードでは、最初にチェーンを試みましdeferred.then()
たが、機能しませんでした。3つの機能すべてが同時に実行されます。同僚が私にその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/