在循环并进行下一个调用之前,我将如何等待直到上一个ajax调用完成?此刻,代码一直循环遍历并立即执行所有ajax请求!
<script>
var busy;
function check(mailpass, proxy){
var post_data = {};
var post_json = "";
post_data['mailpass'] = mailpass;
post_data['proxy'] = '108.36.248.67:17786';
post_json = JSON.stringify(post_data);
jQuery.ajax({
url: '/postdata' ,
type: "POST",
data: {params: post_json},
success: function(data){
var obj = JSON.parse(data);
if(obj.error == 0){
//
$("#acc-live").append(obj.msg + "<br/>");
} else if(obj.error == 1){
//
$("#socks-die").append(obj.msg+ "<br/>");
} else if(obj.error == 2){
//
$("#acc-die").append(obj.msg+ "<br/>");
}
}
});
}
$(document).ready(function(){
$("#submit").click(function(){
var lines = $("#lines").val().split('\n');
for(var i = 0;i < lines.length;i++){
check(lines[i], '123');
}
});
});
</script>
解决方法:
您可以添加计数器(currentIndex)并重新组织代码.
var busy;
var lines;
var currentIndex = 0;
function checkNext(){
if( currentIndex >= lines.length ){
console.log('all done');
return;
}
var mailpass = lines[currentIndex];
var proxy = '123';
var post_data = {};
var post_json = "";
post_data['mailpass'] = mailpass;
post_data['proxy'] = '108.36.248.67:17786';
post_json = JSON.stringify(post_data);
jQuery.ajax({
url: '/postdata' ,
type: "POST",
data: {params: post_json},
success: function(data){
var obj = JSON.parse(data);
if(obj.error == 0){
//
$("#acc-live").append(obj.msg + "<br/>");
} else if(obj.error == 1){
//
$("#socks-die").append(obj.msg+ "<br/>");
} else if(obj.error == 2){
//
$("#acc-die").append(obj.msg+ "<br/>");
}
currentIndex++; //Increase the counter
checkNext();
}
});
}
$(document).ready(function(){
$("#submit").click(function(){
lines = $("#lines").val().split('\n');
checkNext();
});
});
原文地址:https://codeday.me/bug/20191121/2050785.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。