gpt4 book ai didi

javascript - 如何使 setTimeout 表现得像等待

转载 作者:行者123 更新时间:2023-12-03 08:47:21 26 4
gpt4 key购买 nike

我有一段 JavaScript 代码,在某个时刻,我想暂停执行,直到 ajax 通信完成后再继续。

我有以下内容

var set_ajax_done = function(){
ajax_done = true;
}

// Ajax part
ajax_done = false;
$.ajax({
url: $url,
type: 'GET',
success: function (result) {
// some treatment
set_ajax_done();
}
});

// Make sure the ajax communication and treatment are done before continuing
make_sure_aj_comm_finished();


var make_sure_aj_comm_finished = function(){
if ( ajax_done == false )
{
setTimeout(function(){
make_sure_aj_comm_finished();
}, 500);
}
}

当我执行此代码时,似乎执行只是进行,并不等待 bool 变量 ajax_done 为 true。

我如何使代码递归执行make_sure_aj_comm_finished直到变量ajax_done为true

谢谢!

最佳答案

重申一下,通常您不想尝试将异步 js 转换为同步。

但是如果您必须这样做,您可以通过将您想要在 ajax 调用完成后执行的内容放入一个大函数中来完成您想要做的事情,并在 Ajax 函数的成功回调中调用该函数。不需要为此搞乱设置超时/递归的东西。

即:

$.ajax({
url: $url,
type: 'GET',
success: function (result) {
// some treatment
everything_after_ajax();
}
});

关于javascript - 如何使 setTimeout 表现得像等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32831042/

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