gpt4 book ai didi

jquery - else block 总是在验证 if 条件之前执行

转载 作者:行者123 更新时间:2023-12-01 01:00:14 27 4
gpt4 key购买 nike

else block 总是在验证 if 条件之前执行。 proceedToNextValidation() 在 Validation(clu​​sterId) 完全完成其执行之前执行。如何等待函数 Validation(clu​​sterId) 完全执行,然后根据其结果评估 if-else block 。

function validateUpgradateStatus()
{
var target = $("#selectcluster").data("ejDropDownList");
var clusterId = target.model.itemValue;
var isValidated = Validation(clusterId);
if(isValidated )
Error("error msg");
else
proceedToNextValidation();
}
function Validation(id) {
$.ajax({
type: "POST",
url: '@Url.Action("Method", "Controller")',
data: {
clusterId: id,
},
success: function (response) {
if (response.isSdkUpgrading) {
return true;
}
else {
return false;
}
}
});
}

最佳答案

您的逻辑旨在使 Javascript 成为一种同步语言。不幸的是,当您第一次使用 Javascript 这样的语言进行开发时,您已经陷入了与我和其他许多人相同的陷阱。

因此您的 Validation() 函数发送一个 AJAX 请求,然后 ON SUCCESS(又名:HTTP 请求成功完成),您的 ANONYMOUS SUCCESS CALLBACK FUNCTION 根据结果返回 true 或 false。这里的关键是 Validation() 函数不会以相同的方式返回 true 或 false。验证函数实际上立即返回“null”。它不会等待 AJAX (HTTP) 请求完成。

这里的解决方法是您需要:

选项#1:向验证传递名为回调的第二个参数,它是一个函数。然后,将 success AJAX 属性设置为参数回调,如下所示:

var callback = function(response){
if(response.isSdkUpgrading)Error("error msg");
else proceedToNextValidation();
}

function Validation(id, callback){
$.ajax({
type: "POST",
url: '@Url.Action("Method", "Controller")',
data: {clusterId: id},
success: callback
});
}

选项#2:将需要等待 AJAX (HTTP) 请求完成的逻辑移至匿名成功回调中,如下所示:

function Validation(id){
$.ajax({
type: "POST",
url: '@Url.Action("Method", "Controller")',
data: {clusterId: id,},
success: function(response){
if(response.isSdkUpgrading)Error("error msg");
else proceedToNextValidation();
}
});
}

希望这有帮助。

关于jquery - else block 总是在验证 if 条件之前执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42943241/

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