我有一個函數,使得ajax GET請求和基於返回的值設置一個全局JS變量。我使用這個變量(isCalculateTax在下面的代碼),以便進一步處理:Javascript/jQuery同步GET請求
var isCalculateTax;
function setCalculateTaxValue(taxStatementId) {
$.get('/taxstatements/calculatetax/' + taxStatementId, function (data) {
isCalculateTax = data.isCalculateTax;
});
}
$(document).ready(function() {
// initially check the tax statements dropdown to see which one is selected
// and set the isCalculateTax to the right value
var taxStatementId = $('#taxStatements').val();
setCalculateTaxValue(taxStatementId);
enumerateDocumentItems(isCalculateTax);
});
我的問題是,當enumerateDocumentItems()被調用和執行isCalculateTax尚未從AJAX更新的GET請求,所以會出現無法預料結果。
如何在執行enumerateDocumentItems()之前等待所需的時間以便isCalculateTax正確?
如果在某些地方我們不想提供enumerateDocumentItems作爲回調呢?如果我們不希望它被執行,我們可以傳遞null嗎?看到我對@Jochem的評論.. – mare 2010-09-27 18:00:41
@mare - 是的,此代碼在嘗試調用它之前檢查以確保回調是非空的。只需將該值設置爲空值:'updateTaxValue(taxStatementId,null)'。 – tvanfosson 2010-09-27 18:02:54
您的代碼有錯誤:Function.prototype.apply的第二個參數必須是數組 [Break on this error] callback.apply(taxStatementId,data.isCalculateTax); – mare 2010-09-27 21:55:15