gpt4 book ai didi

javascript - jQuery AJAX 结果 block 不会立即触发

转载 作者:行者123 更新时间:2023-11-29 09:55:12 24 4
gpt4 key购买 nike

我在一个循环中有一个 jQuery POST 函数(多个 post 调用)。
出于某种原因,jQuery 正在发布,但在循环结束并一次解析所有结果之前不会返回所有数据。

FOREACH arg_value IN args
{
console.log('Do stuff');

$.post('https://blah.com/xml.php',
{arg: arg_value},
function(xml) {
$(xml).find('tag').each(function() {
console.log('Do more stuff');
});
});
}

这个的输出是...

Do stuff
Do stuff
Do stuff
Do more stuff
Do more stuff
Do more stuff

看起来 jQuery 正在缓存结果或直到最后才执行它。

我期待...

Do stuff
Do more stuff
Do stuff
Do more stuff
Do stuff
Do more stuff

是否有一个选项可以告诉 jQuery 暂停执行直到 AJAX 有结果?它似乎像往常一样异步运行,但在这种情况下我不希望这样。

最佳答案

AJAX 调用是异步的。这意味着您的回调:

function(xml) {
$(xml).find('tag').each(function() {
console.log('Do more stuff');
});
}

仅在服务器返回响应时执行。

与此同时,您的for-each 循环将继续运行,并记录Do stuff
除非你在循环中做疯狂的事情,否则循环会比服务器响应更快
喜欢Jan Dvorak提到,即使你做了疯狂的事情,AJAX 回调也会等待循环完成,导致 Do stuff 总是出现在任何 AJAX 响应之前。

关于javascript - jQuery AJAX 结果 block 不会立即触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13646565/

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