我真的希望有一些愚蠢的,我做的,但我似乎无法找到它。
我想在承诺的链的中间使用Ember.RSVP.all。 我有这个例子是比我的使用更简单,但它说明了问题。 在承诺的链的中间,我有一组都需要解决之前,链可继续承诺 - 正是我明白RSVP.all成为。
不幸的是,当我返回RSVP.all对象,在链中的下一个承诺立即运行,而无需等待()传递给所有的承诺。
我已经成立了一个js小提琴以最好的方式来证明我能想到的: http://jsfiddle.net/3a9arbht/3/
请注意,第一和第二两个解决几乎一模一样的时候,当二应该是1S承诺回来后。 预期第三和第四随访。
小提琴的代码如下所示:
function delayAjax(delay) {
return Ember.$.ajax({
url: '/echo/json/',
data: {
json: '',
delay: delay,
}
});
}
delayAjax(1).then(function() {
Ember.$('#first').addClass('red');
var proms = [delayAjax(1), delayAjax(1)];
return Ember.RSVP.all(proms)
}).then(function() {
Ember.$('#second').addClass('red');
return delayAjax(1);
}).then(function() {
Ember.$('#third').addClass('red');
return delayAjax(1);
}).then(function() {
Ember.$('#fourth').addClass('red');
});