2014-06-06 75 views
1

我有以下的javascript道場遞延未得到解決

var setPrefillVehicleValueDeferred = new Deferred(); 
makePrefillCallsDeferred.then(lang.hitch(this, function() { 
    setPrefillVehicleValueDeferred = this._setPrefillVehicleValue(); 
    //this is being called 
    setPrefillVehicleValueDeferred.then(function() { 
     alert("resolving recall inside"); 
     recallDfd.resolve(data); 
    }); 
})); 

//NOT being called 
setPrefillVehicleValueDeferred.then(function() { 
    alert("resolving recall"); 
    recallDfd.resolve(data); 
}); 

注意到,任何...deferred...dfd變量將被Deferred對象

我的問題,是那個被隔離的setPrefillVehicleValueDeferred.then()沒有被觸發時正在解決延期問題,但正在觸發相同的代碼,進入更近的範圍。這只是代碼的一部分,但我基本上需要執行獨立的then()調用,目前正在調用的調用僅用於調試目的,以查看發生了什麼問題。

任何人都知道爲什麼我想要的那個不被觸發?

我要補充一點this._setPrefillVehicleValue()返回一個解決延遲對象

回答

2

當外界setPrefillVehicleValueDeferred.then調用時,的setPrefillVehicleValueDeferred值是您創建自makePrefillCallsDeferred是異步的新Deferred()對象。所以它不是基於this._setPrefillVehicleValue返回的延遲對象。

你可以解決在this._setPrefillVehicleValue解決外Deferred對象,我想會得到你想要的結果:

var setPrefillVehicleValueDeferred = new Deferred(); 
makePrefillCallsDeferred.then(lang.hitch(this, function() { 
    this._setPrefillVehicleValue().then(function() { 
     setPrefillVehicleValueDeferred.resolve(); 
    }); 
})); 

setPrefillVehicleValueDeferred.then(function() { 
    alert("resolving recall"); 
    recallDfd.resolve(data); 
}); 
+0

完美!謝謝 –

相關問題