我们说UsersIndexRoute
我们加载了所有用户。
model() {
return this.store.findAll('users');
}
当我们第一次加载页面(硬重新加载)并获得HTTP 500 error
时,我们会在ApplicationRoute
' errors()
中收到此错误,并且可以呈现错误页面,一切都很好。
可是:
我们已经加载了Ember应用程序,但只加载了所有用户的子集,转到/users
页面并再次调用findAll
,Ember立即回馈我们已经拥有的用户子集在商店中加载并在后台请求中提取所有其他用户。
现在在我们的情况下,我们在backgroundReload中返回HTTP 500 error
,但似乎https://github.com/emberjs/data/blob/master/packages/ember-data/lib/system/store.js#L1027没有返回promise数组,我们无法捕获错误我们的findAll
方法已经存在,或者在ApplicationRoute
error()
中收到任何错误。
我的问题是:我如何以及在哪里可以从backgroundReload中捕获错误?
答案 0 :(得分:1)
您可以使用.then()
method
model() {
return this.store.findAll('users')
.then(null, (error) => {/*do smth*/});
}
答案 1 :(得分:0)
以下是讨论该主题的GH问题,并提供了一个解决方案"问题所在:https://github.com/emberjs/data/issues/3809