gpt4 book ai didi

javascript - 让同步代码等待异步调用

转载 作者:行者123 更新时间:2023-12-02 19:48:26 28 4
gpt4 key购买 nike

我有一个表单,可以捕获提交事件。我必须等待 $.post 调用才能决定是否提交它。我试过这个:

$('#my_form').submit(function(event){
var data = null;

$.post("/post/call").then(function(_data){
data = _data;
});

if ( $.isPlainObject(data) && data.status === 'ko' ) {
return false; // Do not submit the original form
} else {
// Submit the original form
}
});

但是 data 结果始终为 null,即使 _data 被赋值,因为 $.post 是异步调用。如何等待 $.post 调用完成?

编辑:正如评论中所写,我想避免 $.ajax({async: true}),因为它会卡住页面;有什么方法可以在不卡住页面的情况下获得相同的效果吗?

最佳答案

您应该有某种标志来指示是否提交表单以及 ajax 正在处理。然后,当 ajax 调用通过时,调用 $('#my_form').submit() 发送表单。

宽松,

var validated = false;
$('#my_form').submit(function(event){
if (validated) {
return true;
}


$.post("/post/call").then(function(_data){
var data = _data;

if ( $.isPlainObject(data) && data.status === 'ko' ) {
// Do not submit the original form
} else {
validated = true;
$('#my_form').submit();
}
});

return false;
});

关于javascript - 让同步代码等待异步调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9604120/

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