在Meteor中,this.error与Meteor.publish中的新Meteor.Error之间有什么区别?

时间:2013-03-19 22:10:50

标签: meteor

Meteor.publish中,使用this.error和简单地抛出Meteor.Error之间有什么区别?

2 个答案:

答案 0 :(得分:6)

this.error仅在publish方法中可用。每the docs

  

停止此客户端的订阅,在客户端上触发传递给onError的{​​{1}}回调,如果有的话。如果错误不是Meteor.subscribe,则会将其映射到Meteor.Error

抛出Meteor.Error(500, "Internal server error")不会停止客户端的订阅,它只会终止执行并引发异常。因此,如果您希望确保Meteor将在您之后清理并允许您在发生意外情况时在客户端上处理错误,则建议使用Meteor.Error而不是将自己的内容放在发布方法中。

答案 1 :(得分:3)

看来它们是一样的。在源代码中:

try {
  var res = self._handler.apply(self, EJSON.clone(self._params));
} catch (e) {
  self.error(e);
  return;
}

因此,如果抛出异常,则无论如何都会调用errorerror也会停止订阅。