說我在JS推遲原型函數
function UnitTable(options){
this.name = options.name;
}
UnitTable.prototype = {
query : function(){
$.post('php.php', { func : "get" }, function(data){
if (data) this.data = data;
});
return this;
},
append : function(){
$('#result').append(this.data);
}
}
var unitTable = new UnitTable(options).query().append();
創建類的問題是,AJAX調用是異步將無法完成追加調用之前。
我試過使用$ .Deferred(),但似乎無法正確返回它(如reutrn deferred.promise())並繼續鏈接的事件。
好的 - 謝謝!你認爲這是一個好方法嗎? – Tester232323 2014-10-03 22:17:50
我認爲它沒問題,但你必須注意控制流程;該行不會在代碼中的下一行之前運行。 – elclanrs 2014-10-03 22:19:45
不,這不是一個好的方法。如果保留了對「UnitTable(options)」實例的引用,那麼可以在更早的請求被解決之前進一步調用它的query()方法。但只有一個'this.queryPromise',所有請求將不得不「分享」它。最後一個要求解決的請求將贏得這場戰鬥,並不能保證哪個請求會是 - 首先,最後或者介於兩者之間。假設最後一個請求應該是有保證的勝利者,那麼就需要確保query()在任何新的請求發起之前中止任何先前的請求。 – 2014-10-03 22:58:36