Javascript 以一个循环的顺序迭代。每个循环中都包含一个AJAX请求

Javascript 以一个循环的顺序迭代。每个循环中都包含一个AJAX请求,javascript,ajax,asynchronous,Javascript,Ajax,Asynchronous,我希望遍历一个项目列表以将其保存在数据库中,但必须按顺序保存它们,我的意思是,必须完成最后一个AJAX请求才能转到下一个循环 正如我所知,每个循环都是同步的,但AJAX请求不是。我可以用return true跳到下一个循环,也可以用return false 那么,在从AJAX请求获得任何响应之前,如何处理循环?Async:False将保留rest代码的执行。一旦得到ajax的响应,只有到那时,其余的代码才会执行 或 您可以使用$.ajax。然后(doneCallback,failCallback

我希望遍历一个项目列表以将其保存在数据库中,但必须按顺序保存它们,我的意思是,必须完成最后一个AJAX请求才能转到下一个循环

正如我所知,每个循环都是同步的,但AJAX请求不是。我可以用
return true
跳到下一个循环,也可以用
return false


那么,在从AJAX请求获得任何响应之前,如何处理循环?

Async:False将保留rest代码的执行。一旦得到ajax的响应,只有到那时,其余的代码才会执行


您可以使用
$.ajax。然后(doneCallback,failCallback)
异步:False
将保留rest代码的执行。一旦得到ajax的响应,只有到那时,其余的代码才会执行


您可以使用
$.ajax。然后(doneCallback,failCallback)

您需要添加async参数。此选项可以设置为
true
false
。 下面是使代码同步的代码外观

$('#ListOfItems').each(function () {
    $.ajax({
        type: "POST",
        url: "/Api/Workers/Save",
        data: JSON.stringify(ItemToSave),
        contentType: "application/json; charset=utf-8",
        crossDomain: true,
        dataType: "json",
        async: false
        success: function (data, status, jqXHR) {
            //continue to the next loop
        },
        error: function (jqXHR, status) {
            //continue to the next loop
        }
    });
});
如果你能读到,那就太好了。向下滚动至异步部分

异步(默认值:true) 类型:布尔型 默认情况下,所有请求都是异步发送的(即,默认情况下设置为true)。如果需要同步请求,请将此选项设置为false。跨域请求和数据类型:“jsonp”请求不支持同步操作。请注意,同步请求可能会暂时锁定浏览器,从而在请求处于活动状态时禁用任何操作。从jQuery1.8开始,不推荐在jqXHR($.Deferred)中使用async:false;必须使用success/error/complete回调选项,而不是jqXHR对象的相应方法,如jqXHR.done()


您需要添加async参数。此选项可以设置为
true
false
。 下面是使代码同步的代码外观

$('#ListOfItems').each(function () {
    $.ajax({
        type: "POST",
        url: "/Api/Workers/Save",
        data: JSON.stringify(ItemToSave),
        contentType: "application/json; charset=utf-8",
        crossDomain: true,
        dataType: "json",
        async: false
        success: function (data, status, jqXHR) {
            //continue to the next loop
        },
        error: function (jqXHR, status) {
            //continue to the next loop
        }
    });
});
如果你能读到,那就太好了。向下滚动至异步部分

异步(默认值:true) 类型:布尔型 默认情况下,所有请求都是异步发送的(即,默认情况下设置为true)。如果需要同步请求,请将此选项设置为false。跨域请求和数据类型:“jsonp”请求不支持同步操作。请注意,同步请求可能会暂时锁定浏览器,从而在请求处于活动状态时禁用任何操作。从jQuery1.8开始,不推荐在jqXHR($.Deferred)中使用async:false;必须使用success/error/complete回调选项,而不是jqXHR对象的相应方法,如jqXHR.done()


我是否应该将其作为Ajax请求中的一个参数,如类型:“POST”?是的,您可以为您添加一个参数Ajax
async:false
谢谢,它工作得很好,但我在同步XMLHttpRequest中得到一个警告,因为它对最终用户的体验产生了有害影响,因此不推荐使用主线程。我知道我可以避免在服务器端对代码进行修复。我是否应该忽略该警告?我是否应该将其作为Ajax请求中的一个参数,如类型:“POST”?是的,您可以为您添加一个参数Ajax
async:false
谢谢,它工作得很好,但我在主线程上的同步XMLHttpRequest中得到了一个警告,因为它对最终用户的体验产生了有害影响,因此不推荐使用它。我知道我可以避免在服务器端对代码进行修复。我应该忽略这个警告吗?谢谢,它工作得很好,但我得到了一个警告:主线程上的同步XMLHttpRequest被弃用,因为它会对最终用户的体验产生有害影响。我知道我可以避免在服务器端对代码进行修复。我应该忽略那个警告吗?是的,那是个警告。Javascript基本上是异步的。当您使它同步时,您正在阻止其他进程执行。谢谢,它工作得很好,但我得到了一个警告:主线程上的同步XMLHttpRequest已被弃用,因为它会对最终用户的体验产生有害影响。我知道我可以避免在服务器端对代码进行修复。我应该忽略那个警告吗?是的,那是个警告。Javascript基本上是异步的。当您使其同步时,您正在阻止其他进程执行。