javascript - 使用 jQuery 发送一个又一个 AJAX 调用

标签 javascript jquery ajax facebook-graph-api

在循环和对象数组时,我在发送 AJAX 调用之后遇到问题。代码如下

    var def = true;
    $.each(urls, function(index, val) {
        var postResult = $.Deferred();
        link = 'http://myurl.com' + val.aslug + '/' + val.slug;
        $.when(def).then(function(){
                $.post('https://graph.facebook.com ', {id : link, scrape : 'true' }, function(data, textStatus, xhr) {
                }).always(function(){

                    postResult.resolve(5);
                });

         });
         def = postResult;
    });

问题是第一次和第二次通话都正常。但是第三次​​调用和以下与第二次调用相同:/我认为每个都不会更改为下一个对象

最佳答案

在这种情况下,最简单的方法是: 将变量链接赋值移到“when-then”结构内部。

var def = true;
$.each(urls, function(index, val) {
    var postResult = $.Deferred();

    $.when(def).then(function(){
            var link = 'http://myurl.com' + val.aslug + '/' + val.slug;
            $.post('https://graph.facebook.com ', {id : link, scrape : 'true' }, function(data, textStatus, xhr) {
            }).always(function(){

                postResult.resolve(5);
            });

     });
     def = postResult;
});

你遇到这个问题是因为 JS 的异步能力。 $.each() - 循环根本不等待“延迟的代码段”运行。它循环遍历您的数组并创建一个将执行的任务队列。

您也可以考虑使用 $.AJAX 和选项 async:False 来代替

关于javascript - 使用 jQuery 发送一个又一个 AJAX 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27951005/

相关文章:

javascript - 禁用 :hover on click

javascript - 用 jquery 自动化 slider ?

javascript - 如何使用 Javascript 使某些内容在页面上缓慢显示?

html - 如何使用 css 或 jquery 将单选按钮可点击区域扩展到其他元素

javascript - 向 onclick 属性添加函数奇怪的行为

asp.net - IE 7's "“查看源代码”按钮如何与javascript交互?

jquery - 识别出现在指定位置的所有元素

javascript - 检查ajax/php返回的数据

php - 如何使用 jquery 重新加载页面或 div,然后像 Twitter 一样捕获更新?

javascript - div 中的 Google 新闻框