当我做类似的事情时:
Ember.$.getJSON(url)
.then(function(response){
return Ember.RSVP.all(response.map(Ember.$.getJSON))
})
.then(function(response){
// this is where the oddity begins
console.log(response)
})
在我本地环境(Ember 1.13.5)的应用程序路由器的model
挂钩中,我在第二个then()
的响应中得到了一个奇怪的响应,如:< / p>
Promise: {
_id: 48
_label: undefined
_result: Array[1]
_state: 1
_subscribers: Array[0]
__proto__: Promise
}
我可以在第二个response.then()
中执行then
以获得我正在寻找的响应,但这不太理想,因为我想链接承诺。
我尝试在JSBin上设置相同的示例,使用Ember.run.later
充当承诺:JSBin Example。这种方法似乎在这里工作正常。
我错过了什么吗?
答案 0 :(得分:2)
事实证明Ember.$.ajax()
和Ember.$.getJSON()
是罪魁祸首。它们导致承诺链失败。将getJSON
替换为:
new Ember.RSVP.Promise(function(resolve, reject){
Ember.run.later(function(){
console.log('resolving first fake promise');
var response = [{id: 1, pool: 1, collection: 1}, {id: 2, pool: 2, collection: 1}];
resolve(response)
},1000)
})
有效。所以我转到ember-cli-ic-ajax,并使用它来处理getJSON
部分,它工作正常。
干杯,jQuery。欢呼声。