【发布时间】:2015-09-29 13:35:31
【问题描述】:
我将 Ember 的 PromiseProxyMixin 与 AJAX 数据调用和 Ember RSVP Promises 一起使用。我不想在每个路由/模板中加入错误处理,而是将被拒绝的承诺冒泡到 Application 路由中的错误处理程序,如下所示:
export default Ember.Route.extend({
actions: {
error: function(error, transition) {
return this.transitionTo('error');
return false;
}
}
});
目前,如果一个 Promise 被拒绝,被拒绝的 Promise 不会冒泡到 Application 路由(这是因为 PromiseProxyMixin 附加到一个 Promise 的 .fail() 函数并防止进一步冒泡吗?如果是这样,有没有继续冒泡的方式?)
是否可以使用 PromiseProxyMixin 并允许被拒绝的 Promise 冒泡到 Application 路由?
【问题讨论】:
-
这取决于您在哪里使用 Promise 代理,如果您不将其用作路由的一部分,也不作为计算属性或其他功能的一部分,则不会在路由错误操作。这专门用于转换和路由。您可以通过位于此页面guides.emberjs.com/v1.10.0/understanding-ember/debugging 上的机制连接到其他应用程序错误/承诺错误。附带说明一下,promise 代理在遇到时仍然会抛出异常。
-
我相信这正是原因 - 我在 Route 的模型中创建了几个 PromiseProxyMixins,但是由于有几个请求并且我想在完成后立即显示每个结果,所以我返回了一个 PromiseProxyMixins 的地图从模型函数(因此模型函数直接返回)并使用 {{#if model.somePromise.isPending}} 相应地更新模板的每个部分。我认为无论如何都应该这样做!将检查链接。谢谢!
标签: ember.js rsvp-promise