在中,使用和简单地抛出一个有什么Meteor.publish
区别?this.error
Meteor.Error
问问题
1519 次
2 回答
6
this.error
仅在发布方法中可用。根据文档:
停止此客户端的订阅,在客户端上触发对
onError
传递给 的回调Meteor.subscribe
(如果有)的调用。如果 error 不是 aMeteor.Error
,它将被映射到Meteor.Error(500, "Internal server error")
。
抛出 aMeteor.Error
不会停止客户端的订阅,它只会终止执行并引发异常。因此,如果您想确保 Meteor 会在您之后进行清理,并允许您在发生意外情况时在客户端处理错误,建议使用this.error
而不是将您自己的东西扔到 publish 方法中。
于 2013-03-19T22:18:20.557 回答
3
看来他们是一样的。在源代码中:
try {
var res = self._handler.apply(self, EJSON.clone(self._params));
} catch (e) {
self.error(e);
return;
}
因此,如果抛出异常,error
无论如何都会调用。error
也停止订阅。
于 2013-03-19T22:34:16.643 回答