另一个AJAX调用后返回延迟

时间:2014-10-23 21:50:52

标签: javascript jquery ajax deferred

我的问题相对简单。

我有一个等待返回的延迟数组,代码是这样的:

var deferreds = [];
for(var i = 0; i < 5; i==){
    deferreds.push(getOneResult(params));
}

var deferreds = [];
for(var i = 0; i < 5; i==){
    deferreds.push(getOneResult(params));
}

“getOneResult”函数如下所示:

function getOneResult(params){
  return $.ajax({
    url: myURL,
    data: params
  });
}

它工作正常,直到有一天我决定让“getOneResult”函数执行另一个ajax进程,然后使用这个ajax进程的结果来获得结果,所以现在我的问题代码看起来像这样:

function getOneResult(params){
  $.ajax({
    url: myOtherURL,
    data: params,

    success: function(){
      var result = arguments;
      return $.ajax({
        url: myURL,
        data: arguments
      });
    }

  });
}

然后突然间,“deferreds”数组中的所有项都变为“undefined”。我确定我所做的事情听起来不对,但是在我返回延期之前我是否仍然运行ajax进程?

1 个答案:

答案 0 :(得分:3)

尝试返回第二个承诺。最初的承诺现在将使用包装的第二个ajax承诺。

function getOneResult(params){
  return $.ajax({
    url: myOtherURL,
    data: params
  }).then(function() {
    return $.ajax({
      url: myURL,
      data: arguments
    });
  });
}