优先考虑一个Ajax

时间:2018-04-12 14:58:13

标签: javascript jquery html

我的页面中有四个Ajax调用。我总是希望优先考虑第一个ajax调用,所有其他的ajax调用应该等到第一个ajax调用完成,即使它被调用。有没有什么方法可以首先给出第一个ajax调用?

单击按钮将触发Ajax 2和Ajax 3。我们不能把Ajax 2和Ajax 3放在ajax调用成功

//ajax 1
    $.ajax({
      contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
      type: 'GET',
      dataType: 'json',
      url: //URL
    })
 //ajax 2
    $.ajax({
      contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
      type: 'GET',
      dataType: 'json',
      url: //URL
    })
 //ajax 3
    $.ajax({
      contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
      type: 'POST',
      dataType: 'json',
      url: //URL
    })
 //ajax 4
    $.ajax({
      contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
      type: 'GET',
      dataType: 'json',
      url: //URL
    })

3 个答案:

答案 0 :(得分:1)

是的,你可以。当第一个结算时,只需启动其余的通话:

$.ajax( ... )  // First AJAX
  .then(function(response) {

    // Play with the response of first AJAX operation        

    return $.when([
      $.ajax( ... ), // Second AJAX
      $.ajax( ... ), // Third AJAX
      $.ajax( ... )  // Fourth AJAX
    ]);
  })
  .then(function(response) {
    // Play with the response of rest of the AJAX operations.
  })

答案 1 :(得分:0)

请使用Done方法。

// ajax 1
$.ajax({
  contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
  type: 'GET',
  dataType: 'json',
  url: //URL
}).done(function() {
    // ajax 2
    // ajax 3
    // ajax 4
});

有关详细信息,请查看API文档:http://api.jquery.com/jquery.ajax/

答案 2 :(得分:0)

每次执行ajax1时,将返回的保证保存到全局变量(假设为ajax1Promise)。

在2和3的按钮处理程序上使用以下代码:

ajax1Promise.done(function(){ajax2()});
ajax1Promise.done(function(){ajax3()});

分别

更新提供示例。我通过返回延迟分辨率的自定义承诺来模拟ajax。只需检查控制台日志: https://jsfiddle.net/1gopxj49/13/

在此示例中,如果ajax2 / ajax3ajax1正在进行时启动,则会等到它完成。