Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.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
Javascript 在for循环中等待上一个AJAX调用_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 在for循环中等待上一个AJAX调用

Javascript 在for循环中等待上一个AJAX调用,javascript,jquery,ajax,Javascript,Jquery,Ajax,在循环并执行下一个调用之前,如何等待上一个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';

在循环并执行下一个调用之前,如何等待上一个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>

var忙;
功能检查(邮件传递、代理){
var post_data={};
var post_json=“”;
post_数据['mailpass']=mailpass;
post_数据['proxy']='108.36.248.67:17786';
post_json=json.stringify(post_数据);
jQuery.ajax({
url:“/postdata”,
类型:“POST”,
数据:{params:post_json},
成功:功能(数据){
var obj=JSON.parse(数据);
如果(obj.error==0){
//
$(“#acc live”)。追加(obj.msg+”
); }else if(obj.error==1){ // $(“#socks die”).append(obj.msg+”
); }else if(obj.error==2){ // $(“#acc die”).append(obj.msg+”
); } } }); } $(文档).ready(函数(){ $(“#提交”)。单击(函数(){ 变量行=$(“#行”).val().split('\n'); 对于(变量i=0;i
您应该查看jQuery.when():

这将等待异步调用完成后继续

您可以添加计数器(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();
    });
});
var忙;
var线;
var currentIndex=0;
函数checkNext(){
如果(currentIndex>=lines.length){
console.log(“全部完成”);
返回;
}
var mailpass=行[currentIndex];
var proxy='123';
var post_data={};
var post_json=“”;
post_数据['mailpass']=mailpass;
post_数据['proxy']='108.36.248.67:17786';
post_json=json.stringify(post_数据);
jQuery.ajax({
url:“/postdata”,
类型:“POST”,
数据:{params:post_json},
成功:功能(数据){
var obj=JSON.parse(数据);
如果(obj.error==0){
//
$(“#acc live”)。追加(obj.msg+”
); }else if(obj.error==1){ // $(“#socks die”).append(obj.msg+”
); }else if(obj.error==2){ // $(“#acc die”).append(obj.msg+”
); } currentIndex++;//增加计数器 checkNext(); } }); } $(文档).ready(函数(){ $(“#提交”)。单击(函数(){ 行=$(“#行”).val().split('\n'); checkNext(); }); });
如果您只想等待ajax调用完成,为什么不能将其设置为异步:false?(尽管我不推荐)

jQuery.ajax({
url:“/postdata”,
类型:“POST”,
async:false,//此处
数据:{params:post_json},
成功:功能(数据){
var obj=JSON.parse(数据);
如果(obj.error==0){
//
$(“#acc live”)。追加(obj.msg+”
); }else if(obj.error==1){ // $(“#socks die”).append(obj.msg+”
); }else if(obj.error==2){ // $(“#acc die”).append(obj.msg+”
); } } });
这将使循环等待直到方法完成它的执行

jQuery.ajax({
    url: '/postdata' ,
    type: "POST",
    async : false, // here
    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/>"); 
        }
    }
});