微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – jQuery AJAX结果块不会立即触发

我在循环内部有一个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东西总是出现在任何AJAX响应之前.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐