gpt4 book ai didi

javascript - 使用 Javascript/jQuery 的同步 GET 请求

转载 作者:数据小太阳 更新时间:2023-10-29 04:41:20 25 4
gpt4 key购买 nike

我有一个函数可以发出 ajax GET 请求,并根据返回的值设置一个全局 JS 变量。我使用此变量(以下代码中的 isCalculateTax)进行进一步处理:

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 正确?

最佳答案

有两种方法可以做到这一点。首先,您可以更改 setCalculateTaxValue(并可能重命名它),以便它接受在检索到值时执行的回调。然后将 enumerateDocumentItems 作为回调传递。或者,这确实违背了异步性的概念,您可以将其更改为使用 $.ajax 并将 aSync 选项设置为 false。我推荐前者。

var isCalculateTax; // no longer needed?

function updateTaxValue(taxStatementId,callback) {
$.get('/taxstatements/calculatetax/' + taxStatementId, function (data) {
isCalculateTax = data.isCalculateTax;
if (callback) {
callback.call( taxStatementId, 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();
updateTaxValue(taxStatementId,enumerateDocumentItems);
});

使用回调比直接引用回调函数更灵活。如有必要,它将允许您将更新代码重复用于多个目的。

关于javascript - 使用 Javascript/jQuery 的同步 GET 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3806357/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com