是否应命名Meteor发布函数
Should Meteor publication functions be named?
我正在努力更好地了解发布/订阅模型的工作原理。
具体来说,我指的是教程中的这一步。
if (Meteor.isServer) {
Meteor.publish('tasks', function tasksPublication() {
return Tasks.find();
});
}
名称tasksPublication
在本教程后面的任何地方都不会使用。
看看这里的文档,似乎不需要这个名字
命名发布函数有什么区别吗?
发布时确实不需要使用命名函数,所有这些都可以:
Meteor.publish('tasks', function publishAllTasks() { return Tasks.find() });
Meteor.publish('tasks', function() { return Tasks.find() });
Meteor.publish('tasks', () => Tasks.find());
(第三行具有箭头功能)
在功能上没有本质上的区别,在三者之间进行选择主要取决于味道。
然而,只有第一条语句(命名函数表达式)会做一件事:当发生未捕获的异常时,名称会出现在堆栈跟踪中。
例如,假设你在写Tasks
时拼写错误,而写Waffles
:
// File: server/index.js
Meteor.publish('tasks', function publishAllTasks() { return Waffles.find() });
// or:
Meteor.publish('tasks', () => Waffles.find());
这是第一种情况下的堆栈跟踪(我删除了时间戳)
子任务id egG3xJuLTLFvH4jLT ReferenceError出现异常:未定义华夫饼
位于Subscription.publishAllTasks[as_handler](server/index.js:4:10)
(一些无聊的东西)
第二种情况下的堆栈跟踪:
子任务id u4rKBFH78uTBEoys2 ReferenceError出现异常:未定义华夫饼
订阅_处理程序(server/index.js:4:10)
(更无聊的东西)
在第一种情况下,函数名称显示得很清楚
文件名和行仍然显示在行的末尾。
因此,如果您在日志中爬行以查找源自/通过publishAllTasks
的所有未捕获异常,则可能会有所帮助
不过,在调试时,这并没有多大帮助,因为您仍然有文件名和行,而找到错误的函数只是打开该文件的问题。
所以,除非你有特定的日志抓取需求,否则不要麻烦,选择你喜欢的。
相关文章:
- 用嵌套函数和默认函数定义函数
- 从嵌套函数访问函数属性
- 如何记录调用另一个函数的函数的返回值
- typescript定义构造函数或函数
- JavaScript模块模式-如何在使用对象/函数之前激发构造函数/init函数
- 如何异步处理:函数C取决于函数B取决于函数A
- 从自执行函数返回函数的Javascript性能命中率
- 从同一原型和上下文中的另一个函数调用函数
- 如何在javascript中从另一个函数调用函数
- 类型错误:布尔值不是 Angular 中登录函数的函数
- 对返回函数的函数感到困惑
- 对使用函数构造函数创建的函数的内部引用
- 获取使用函数构造函数创建的函数的名称
- JavaScript 访问函数构造函数中的“this”
- 从函数返回函数而不调用返回的函数
- 如何运行一个调用某个函数的函数首先完成它,然后再调用下一个函数.正在创建回调函数
- 函数内部的函数vs函数返回JavaScript中的函数
- 访问来自另一个函数的函数结果
- 对象函数返回函数而不是值
- 如何在Javascript中创建一个调用其他函数的函数