for循环Javascript中的异步AjaxCall
如何使每个迭代成为需要异步的新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
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
});
});