Ajax串联调用完成。

3
我有三个函数。当第二个函数(在第一个函数之后)和第三个函数都完成时,我想做一些事情。我应该怎么做?
function one(){
    $.ajax({
      url:'url'
    }).done(function(res){
      two();
    })
}


function two(){
    $.ajax({
      url:'url'
    })
}

function three(){
    $.ajax({
      url:'url'
    })
}

enter image description here


如果你的目标是支持 Promise 的现代浏览器,那么你可以使用 Promise.all() - Sumner Evans
这是一个展示如何使用 promises 进行链式操作的 jsfiddle 链接:http://jsfiddle.net/dK9tc/。你可以使用 $.when('foo') 来生成一个已完成的 promise,而不是使用 $.ajax(...)。 - Victor Stoddard
@VictorStoddard,使用$.when(String)的目的是什么? - charlietfl
@charlietfl https://www.quora.com/What-does-foo-mean-in-computer-science@charlietfl https://www.quora.com/计算机科学中的foo是什么意思 - Victor Stoddard
1个回答

2

返回每个函数的$.ajax承诺,然后您可以使用$.when()

function one() {
  return $.ajax({
    url: 'url'
  }).then(two);      
}

function two() {
  // return request promise
  return $.ajax({
    url: 'url'
  })
}

function three() {
  // return request promise
  return $.ajax({
    url: 'url'
  })
}

$.when(one(),three()).then(function(){
   //all three requests completed here
})

谢谢!我之前做过这个,但是我使用了两次错误的函数。one() { return $.ajax({ url: 'url' }).done(function(data){two()}); } - Alexander

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接