2014-02-21 18 views
0

只是一小段代码:如何链接jQuery中的延迟对象?

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 simultainiously和成功的情况下case 1运行的代码和case 2分别为
  2. 在成功案例/usr1.jsonurl2.json它运行得到为/url3.json
  3. 返回延迟对象(或承诺,请不要介意,现在我看到的),这$.when收益(因此,由$.when的规则/url1.json/url2.json的对象)

我从它需要:
1。 ..
2 ...
3.返回这是由$.get('/url3.json')

所以返回延期对象,也许我需要像

$.when(...).flatMap(function() { return $.get('/url3.json') }) 

我有什么办法吗?

+0

的'flatMap'你正在寻找被称为'** ** then'在[承诺](http://promisesaplus.com/) – Bergi

回答

4

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

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

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

+0

谢谢你,贾森。看起来这正是我需要的。我询问之前检查过jquery文档,但不明白'then'的真正含义。 – Andrey