嵌套Ajax想要按顺序运行

时间:2017-04-11 07:30:02

标签: javascript jquery ajax

我的代码如下

$.ajax({
    type: 'post',
    dataType: 'json',
    url: '123.123.0.1',
    success: function (result) {
        for (var i = 0; i < 2; i++) {
            console.log('OUTSIDE');
            $.ajax({
                type: 'post',
                dataType: 'json',
                url: '123.123.0.1',
                success: function (result) {
                    console.log('INSIDE');
                }
            });
        }
    }
});

该代码的结果是:

OUTSIDE
OUTSIDE
INSIDE
INSIDE

我的目标是我想在AJAX之外等待AJAX​​内部直到AJAX完成然后在AJAX内部继续。所以我想看结果  喜欢:

OUTSIDE
INSIDE
OUTSIDE
INSIDE

我的问题:

怎么做?如何修复我的代码?

1 个答案:

答案 0 :(得分:0)

在进行下一步之前,您必须等待ajax请求完成。 下面是一个递归的例子。

// Code goes here

$.ajax({
  type: 'post',
  dataType: 'json',
  url: '123.123.0.1',
  success: function(result) {

    function processResult() {
      if (i >= 2) return;

      console.log('OUTSIDE');

      $.ajax({
        type: 'post',
        dataType: 'json',
        url: '123.123.0.1',
        success: function(result) {
          console.log('INSIDE');
        }
      }).then(function() {
        processResult(++i);
      });
    }
    processResult(0);
  }
});