如何在jQuery中链接延迟对象?

时间:2014-02-21 22:33:03

标签: javascript jquery http asynchronous

只是一小段代码:

return $.when(
  $.get('/url1.json').done(function(r){
    //case 1
  }), $.get('/url2.json').done(function(r) {
    //case 2
  })
).done(function(){return $.get('/url3.json').done(function(r){
  //case 3
})})

此代码的作用:

  1. 运行/url1.json/url2.json同时获取,如果成功,分别运行代码case 1case 2
  2. 如果/usr1.jsonurl2.json都成功,则会/url3.json
  3. 运行
  4. 返回$.when返回的延迟对象(或一个承诺,现在看不见)/url1.json返回/url2.json$.when的对象$.get('/url3.json')的规则)
  5. 我需要的是什么:
    1. ... 2. ...
    3.返回由$.when(...).flatMap(function() { return $.get('/url3.json') })

    返回的延迟对象

    所以,也许我需要像

    这样的东西
    {{1}}

    我有办法吗?

1 个答案:

答案 0 :(得分:4)

只需拨打then而不是done即可将承诺更改为传入的回调结果。

return $.when(
    $.get('/url1.json'), 
    $.get('/url2.json')
  )
  .then(function() {
    return $.get('/url3.json')
  });

http://jsfiddle.net/5N9JJ/3/