Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.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 同时进行两次ajax调用,并在两次调用完成后进行回调?_Javascript_Jquery - Fatal编程技术网

Javascript 同时进行两次ajax调用,并在两次调用完成后进行回调?

Javascript 同时进行两次ajax调用,并在两次调用完成后进行回调?,javascript,jquery,Javascript,Jquery,我想发出2个api请求,但在第一个回调函数中调用第二个请求对我来说似乎不合适。有没有什么方法可以同时调用这两个函数,并且只有在收到这两个函数的响应时才运行回调函数?您应该在调用之外使用一个变量,该变量在成功时递增。在回调中测试它是否等于调用数,如果为true,则可以调用finish方法 大概是这样的: var nbSuccess = 0; var nbCalls = 2; call_1.success - nbSuccess++ - if nbSuccess == nbCalls {d

我想发出2个api请求,但在第一个回调函数中调用第二个请求对我来说似乎不合适。有没有什么方法可以同时调用这两个函数,并且只有在收到这两个函数的响应时才运行回调函数?

您应该在调用之外使用一个变量,该变量在成功时递增。在回调中测试它是否等于调用数,如果为true,则可以调用finish方法

大概是这样的:

var nbSuccess = 0;
var nbCalls = 2;
call_1.success 
  - nbSuccess++
  - if nbSuccess == nbCalls {doFinish}
call_2.success 
  - nbSuccess++
  - if nbSuccess == nbCalls {doFinish}

function doFinish...

您应该在成功时递增的调用之外使用一个变量。在回调中测试它是否等于调用数,如果为true,则可以调用finish方法

大概是这样的:

var nbSuccess = 0;
var nbCalls = 2;
call_1.success 
  - nbSuccess++
  - if nbSuccess == nbCalls {doFinish}
call_2.success 
  - nbSuccess++
  - if nbSuccess == nbCalls {doFinish}

function doFinish...

您应该在成功时递增的调用之外使用一个变量。在回调中测试它是否等于调用数,如果为true,则可以调用finish方法

大概是这样的:

var nbSuccess = 0;
var nbCalls = 2;
call_1.success 
  - nbSuccess++
  - if nbSuccess == nbCalls {doFinish}
call_2.success 
  - nbSuccess++
  - if nbSuccess == nbCalls {doFinish}

function doFinish...

您应该在成功时递增的调用之外使用一个变量。在回调中测试它是否等于调用数,如果为true,则可以调用finish方法

大概是这样的:

var nbSuccess = 0;
var nbCalls = 2;
call_1.success 
  - nbSuccess++
  - if nbSuccess == nbCalls {doFinish}
call_2.success 
  - nbSuccess++
  - if nbSuccess == nbCalls {doFinish}

function doFinish...
您可以使用$.when()jquery函数

您可以使用$.when()jquery函数

您可以使用$.when()jquery函数

您可以使用$.when()jquery函数


在第一个回调中调用第二个请求使它们同步。只有在第一个完成后,才会调用第二个

如果您想要两个,只在两个完成时发送两个呼叫并处理,您可以(未测试) 对两者使用相同的回调,并使用布尔值确保两者都已完成

类似于(伪代码):


在第一个回调中调用第二个请求使它们同步。只有在第一个完成后,才会调用第二个

如果您想要两个,只在两个完成时发送两个呼叫并处理,您可以(未测试) 对两者使用相同的回调,并使用布尔值确保两者都已完成

类似于(伪代码):


在第一个回调中调用第二个请求使它们同步。只有在第一个完成后,才会调用第二个

如果您想要两个,只在两个完成时发送两个呼叫并处理,您可以(未测试) 对两者使用相同的回调,并使用布尔值确保两者都已完成

类似于(伪代码):


在第一个回调中调用第二个请求使它们同步。只有在第一个完成后,才会调用第二个

如果您想要两个,只在两个完成时发送两个呼叫并处理,您可以(未测试) 对两者使用相同的回调,并使用布尔值确保两者都已完成

类似于(伪代码):

你可以这样做

var response = 0;

var callback = function () {
    if (response === 2){/* code */}
};

// first request
$.get(url).done(function () {
    response++;
    callback();
});
// second request
$.get(url).done(function () {
    response++;
    callback();
});
你可以这样做

var response = 0;

var callback = function () {
    if (response === 2){/* code */}
};

// first request
$.get(url).done(function () {
    response++;
    callback();
});
// second request
$.get(url).done(function () {
    response++;
    callback();
});
你可以这样做

var response = 0;

var callback = function () {
    if (response === 2){/* code */}
};

// first request
$.get(url).done(function () {
    response++;
    callback();
});
// second request
$.get(url).done(function () {
    response++;
    callback();
});
你可以这样做

var response = 0;

var callback = function () {
    if (response === 2){/* code */}
};

// first request
$.get(url).done(function () {
    response++;
    callback();
});
// second request
$.get(url).done(function () {
    response++;
    callback();
});

我希望这对你有帮助。试试这个

$.ajax("yourUrl",function(){

}).done(function(){
   $.ajax("yourUrl",function(){

   }).done(function(){
       // Do your task
   });
});

我希望这对你有帮助。试试这个

$.ajax("yourUrl",function(){

}).done(function(){
   $.ajax("yourUrl",function(){

   }).done(function(){
       // Do your task
   });
});

我希望这对你有帮助。试试这个

$.ajax("yourUrl",function(){

}).done(function(){
   $.ajax("yourUrl",function(){

   }).done(function(){
       // Do your task
   });
});

我希望这对你有帮助。试试这个

$.ajax("yourUrl",function(){

}).done(function(){
   $.ajax("yourUrl",function(){

   }).done(function(){
       // Do your task
   });
});

您可以将两个全局布尔变量设置为每个请求状态的指示符,在每个回调中将每个设置为true,然后检查以确认两个状态变量是否都为true…您可以将两个全局布尔变量设置为每个请求状态的指示符,在每个回调中将每个设置为true,然后检查以确认两个状态变量是否均为真…您可以将两个全局布尔变量设置为每个请求状态的指示器,在每个回调中将每个设置为真,然后检查以确认两个状态变量是否均为真…您可以将两个全局布尔变量设置为每个请求状态的指示器,在每次回调中将each设置为true,然后检查以确认两个状态变量是否都为true…这是最好的解决方案。在回答中添加一个示例可能会有所帮助。谢谢!这正是我所要寻找的。这是IMO的最佳解决方案。在您的答案中添加一个示例可能会有所帮助。谢谢!这正是我所要寻找的。这是IMO的最佳解决方案。在您的答案中添加一个示例可能会有所帮助。谢谢!这正是我所要寻找的。这是IMO的最佳解决方案。在您的答案中添加一个示例可能会有所帮助。谢谢!这正是我要找的。