eva*_*n54 1 javascript publish-subscribe meteor meteor-publications
我正在努力更好地理解发布/订阅模型的工作原理.
具体来说,我指的是教程中的这一步.
if (Meteor.isServer) {
Meteor.publish('tasks', function tasksPublication() {
return Tasks.find();
});
}
Run Code Online (Sandbox Code Playgroud)
该tasksPublication教程之后的任何地方都不会使用该名称.
发布时确实不需要使用命名函数,所有这些工作:
Meteor.publish('tasks', function publishAllTasks() { return Tasks.find() });
Meteor.publish('tasks', function() { return Tasks.find() });
Meteor.publish('tasks', () => Tasks.find());
Run Code Online (Sandbox Code Playgroud)
(第三行具有箭头功能)
功能上没有任何原始差异,并且在三者之间进行选择主要归结为品味.
但是,只有第一个语句(命名函数表达式)才会这样做:当发生未捕获的异常时,名称会出现在堆栈跟踪中.
例如,假设您在编写Tasks和写入时输入错误Waffles:
// File: server/index.js
Meteor.publish('tasks', function publishAllTasks() { return Waffles.find() });
// or:
Meteor.publish('tasks', () => Waffles.find());
Run Code Online (Sandbox Code Playgroud)
这是第一种情况下的堆栈跟踪(我删除了时间戳)
子任务的异常id egG3xJuLTLFvH4jLT ReferenceError:
在Subscription.publishAllTasks [as _handler](server/index.js:4:10)中没有定义Waffles
(一些无聊的东西)
第二种情况下的堆栈跟踪:
子任务的异常id u4rKBFH78uTBEoys2 ReferenceError:
在Subscription._handler(server/index.js:4:10)中没有定义Waffles
(更无聊的东西)
在第一种情况下,功能名称清晰显示.
文件名和行仍显示在该行的末尾.
因此,如果您浏览日志以查找源自/传递的所有未捕获的异常,则可能会有所帮助publishAllTasks.
调试时没有多大帮助,因为你仍然有文件名和行,找到错误的功能只是打开那个文件的问题.
因此,除非您有特定的日志爬行需求,否则请不要费心去寻找您喜欢的任何一个.
| 归档时间: |
|
| 查看次数: |
146 次 |
| 最近记录: |