等待Ajax功能完成,然后再开始新的功能

埃比肯内塞

我有以下脚本-

function getdata(stringArray, Net) {
            if (stringArray, [0] != "") {
                var processing = false;
                for (var i = 0; i < (stringArray, i++) {
                    var username = (stringArray, [i];
                    if (processing === false) {
                        processing = true;
                        $.when(
                            $.ajax({
                                type: "post",
                                contentType: "application/json; charset=utf-8",
                                url: "Default.aspx/getdata",
                                data: JSON.stringify({ test: 'test' }),
                                dataType: "json",
                                success: function (data) {
                                    var json = data.d;
                                    FinalJson = json;
                                    doStuff(Net);
                                },
                                error: function (err) {
                                    alert("Error please retry.");
                                }
                            })
                        ).done(function () {
                            processing = false;
                        });
                    }
                }

            } else {

            }
        };

stringArray会有不同数量的字符串。对于每个字符串,我都想进行Ajax调用,但是请等到调用完成后再开始新的调用。

我认为,通过添加processing变量并在进入函数时将其初始设置为false,然后在ajax调用之前将其.done设置为true,就可以设置处理为false来实现。

由于某种原因,它会触发第一个Ajax调用,然后停止,而不是在第一个调用完成时开始列表中的下一个。

我要去哪里错了?

来宾271314

编辑,更新

补充:从stringArray使用中删除空字符串$.map()在处检查是否有空字符串$.each(),然后再进行进一步处理

尝试(此模式)

$(function () {
    // e.g. , with `html` : `<textarea></textarea>`
    var stringArray = ["","a", "b", "c","", "1", "2", "", "3"];
    var request = function (_string) {
        return $.ajax({
            url: "/echo/json/",
            type: "POST",
            data: {
                json: JSON.stringify({
                    "d": _string
                })
            }
        });
    };
    var Net = [];
    var doStuff = function (n) {
        // do stuff 
        // when all requests complete
        $.each(n, function (k, v) {
            $("textarea").append(v + "\n");
        });
    };
    // remove `""` from `stringArray`
    stringArray = $.map(stringArray, function(val, idx) {
      return val != "" ? [val] : null
    });
    $.each(stringArray, function (k, v) {
      // `""` removed from`stringArray` above ,
      // check again
      if (v != "") {
        $.when(request(v))
            .done(function (data, textStatus, jqxhr) {
              if (textStatus === "success" 
                 && window.confirm("at index " 
                    + k + " of " + stringArray.length 
                    + " asynchronous requests supplied by `stringArray`,"
                    + "continue")) {
                // do stuff 
                // when each request completes
                var json = data.d;
                // FinalJson = json;
                Net.push(data.d);
                if (Net.length === stringArray.length) {
                    // do stuff 
                    // when all requests complete
                    alert(textStatus + " " + Net.length 
                    + " requests completed");
                    doStuff(Net);
                };
            };
        })
        .fail(function (jqxhr, textStatus, errorThrown) {
            console.log("error: " + textStatus, errorThrown);
            $("textarea")
                .val(jqxhr.getAllResponseHeaders() 
                 + "\n" + jqxhr.status + "\n" + textStatus 
                 + "\n" + errorThrown + "\n" + jqxhr.responseText)
        });
      };
    });
});

jsfiddle http://jsfiddle.net/guest271314/L3jbvnex/

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

等待Ajax功能完成,然后再开始新的功能

来自分类Dev

等待循环完成,然后再执行下一个功能

来自分类Dev

等待功能中的所有淡入完成,然后再启动下一个功能

来自分类Dev

等待功能中的所有淡入完成,然后再启动下一个功能

来自分类Dev

Javascript / jQuery-等待功能完成,然后再运行其余功能

来自分类Dev

等待JS异步功能完成,然后再运行一些同步代码

来自分类Dev

jQuery等待函数完成,然后再执行新操作

来自分类Dev

Android / Java-等待AsyncTask结束,然后再执行下一个功能

来自分类Dev

等待Swift动画完成,然后再执行代码

来自分类Dev

等待承诺完成,然后再处理结果

来自分类Dev

等待已取消的任务完成,然后再继续执行

来自分类Dev

等待之前的块完成处理,然后再继续

来自分类Dev

等待thunk完成HTTP请求,然后再检查状态

来自分类Dev

等待网络通话完成,然后再返回值

来自分类Dev

在“ for”循环中使用Jquery promise()等待效果完成,然后再开始下一个效果

来自分类Dev

从功能返回之前,等待AJAX完成?

来自分类Dev

Angular等待服务功能Ajax完成

来自分类Dev

等待任何任务完成,然后开始新的任务

来自分类Dev

等待任务完成,然后再次运行

来自分类Dev

Javascript ES6-等待模块完成执行,然后再将功能或变量导入另一个.js文件中

来自分类Dev

等待验证(服务器端)完成,然后再插入数据库

来自分类Dev

等待完成,然后再执行下一步

来自分类Dev

等待vsix完成安装,然后再启动Visual Studio

来自分类Dev

Node.js,等待所有Redis查询完成,然后再继续执行

来自分类Dev

等待.sh脚本完成,然后再执行另一个.sh脚本?

来自分类Dev

父进程等待所有子进程完成,然后再继续

来自分类Dev

等待直到线程完成,然后再执行下一步

来自分类Dev

等待异步过程完成,然后再重定向到Koajs

来自分类Dev

Node.js,等待所有Redis查询完成,然后再继续执行

Related 相关文章

  1. 1

    等待Ajax功能完成,然后再开始新的功能

  2. 2

    等待循环完成,然后再执行下一个功能

  3. 3

    等待功能中的所有淡入完成,然后再启动下一个功能

  4. 4

    等待功能中的所有淡入完成,然后再启动下一个功能

  5. 5

    Javascript / jQuery-等待功能完成,然后再运行其余功能

  6. 6

    等待JS异步功能完成,然后再运行一些同步代码

  7. 7

    jQuery等待函数完成,然后再执行新操作

  8. 8

    Android / Java-等待AsyncTask结束,然后再执行下一个功能

  9. 9

    等待Swift动画完成,然后再执行代码

  10. 10

    等待承诺完成,然后再处理结果

  11. 11

    等待已取消的任务完成,然后再继续执行

  12. 12

    等待之前的块完成处理,然后再继续

  13. 13

    等待thunk完成HTTP请求,然后再检查状态

  14. 14

    等待网络通话完成,然后再返回值

  15. 15

    在“ for”循环中使用Jquery promise()等待效果完成,然后再开始下一个效果

  16. 16

    从功能返回之前,等待AJAX完成?

  17. 17

    Angular等待服务功能Ajax完成

  18. 18

    等待任何任务完成,然后开始新的任务

  19. 19

    等待任务完成,然后再次运行

  20. 20

    Javascript ES6-等待模块完成执行,然后再将功能或变量导入另一个.js文件中

  21. 21

    等待验证(服务器端)完成,然后再插入数据库

  22. 22

    等待完成,然后再执行下一步

  23. 23

    等待vsix完成安装,然后再启动Visual Studio

  24. 24

    Node.js,等待所有Redis查询完成,然后再继续执行

  25. 25

    等待.sh脚本完成,然后再执行另一个.sh脚本?

  26. 26

    父进程等待所有子进程完成,然后再继续

  27. 27

    等待直到线程完成,然后再执行下一步

  28. 28

    等待异步过程完成,然后再重定向到Koajs

  29. 29

    Node.js,等待所有Redis查询完成,然后再继续执行

热门标签

归档