Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
for循环Javascript中的异步AjaxCall_Javascript_Jquery_Ajax_For Loop - Fatal编程技术网

for循环Javascript中的异步AjaxCall

for循环Javascript中的异步AjaxCall,javascript,jquery,ajax,for-loop,Javascript,Jquery,Ajax,For Loop,如何使每个迭代成为需要异步的新Ajaxcall。 不用 async: false, 如果我使用async执行此操作,我会收到一条警告消息,并且我的UI冻结,我如何修复此问题?这不是正常的for循环 EDIT1 var username = "username1"; var password = "test"; var code = ""; for(var i = 0; i < results.lenght;i++){ $.ajax({ data: {usernam

如何使每个迭代成为需要异步的新Ajaxcall。 不用

async: false,
如果我使用async执行此操作,我会收到一条警告消息,并且我的UI冻结,我如何修复此问题?这不是正常的for循环

EDIT1

var username = "username1";
var password = "test";
var code = "";
for(var i = 0; i < results.lenght;i++){

   $.ajax({
        data: {username:username, password: password},
        url: './php/'+results[i].NAME+'.php',
        method: 'POST',
        datatype: 'json',
        success: function(msg) {
           //all the msg info needs to be filled in in the html. via the var "code"
        }
        });    
    }
return code;
var username=“username1”;
var password=“test”;
var代码=”;
对于(变量i=0;i
您可以按照以下思路进行操作(尚未测试代码):

函数迭代(完成,i){

if(i使用jqueryajax请求的承诺语义

var params = {
    username: "username1",
    password: "test"
};

// build an array of Ajax requests
var requests = results.map(function (result) {
    var url = './php/' + encodeURIComponent(result.NAME) + '.php';
    return $.post(url, params, null, 'json');
});

// wait until all requests are done with $.when()
$.when.apply($, requests).done(function (responses) {
    responses.forEach(function (data) {
        // fill the data into the html
    });
});

请特别参阅和相关页面。

您可以重新构造代码,以便使用递归而不是循环。下一个函数调用(即迭代)取决于Ajax的成功回调。我怎么能做到这一点?你能举一个简单的例子,将EDIT1更改为递归函数吗?你读过我的问题吗?是的。你读过副本了吗?@Juhana这不是一个典型的JavaScript循环闭包问题。我想这对我来说是可行的,但现在我将稍后使用另一个解决方案,当完整的程序完成后,我回来检查最快的方法谢谢最快的方法?你在说什么?
var params = {
    username: "username1",
    password: "test"
};

// build an array of Ajax requests
var requests = results.map(function (result) {
    var url = './php/' + encodeURIComponent(result.NAME) + '.php';
    return $.post(url, params, null, 'json');
});

// wait until all requests are done with $.when()
$.when.apply($, requests).done(function (responses) {
    responses.forEach(function (data) {
        // fill the data into the html
    });
});