事件和函数之间的区别?

2023-11-23

我是 Node 新手,我正在努力理解事件和函数之间的主要区别。两者都需要触发,那么如果我们无论如何都必须触发事件,为什么我们还需要事件呢?

它与触发函数有何不同?

示例代码:

var events = require('events');
var eventEmitter = new events.EventEmitter();

eventEmitter.on('event1', function () {
    console.log('Event 1 executed.');
    eventEmitter.emit('event2');
});

eventEmitter.on('event2', function() {
    console.log('Event 2 executed.');
});

eventEmitter.emit('event1');
console.log('Program Ended.');

我们用函数也能达到同样的效果吧?

我确信这在 Node 中具有非常重要的意义(否则它就不会存在,哈哈),但我很难理解它。

帮助表示感谢! :)


事件处理异步操作。从可互换的意义上来说,它们与函数并没有真正的相关性。

eventEmitter.on本身是一个函数,它需要两个参数:事件名称,然后是事件发生时要执行的函数(回调)。

eventEmitter.on(evt, callback)

没有办法告诉何时将发出事件,因此您提供了一个在事件发生时执行的回调。

在您的示例中,您控制事件的触发时间,这与现实世界的使用不同,在现实世界中您可能有一个服务器侦听可以随时连接的连接。

server.listen('9000', function(){
    console.log('Server started');
});

server.on('connection', function(client){
    console.log('New client connected');
    doSomethingWithClient(client);
});

//series of synchronous events
function doSomethingWithClient(client){
    //something with client
}

For server.listen服务器不会立即启动,一旦准备好就会调用回调

server.on('connection')监听客户端连接,它们可以随时到来。然后,当发生连接时会触发该事件,从而导致运行回调。

然后有doSomethingWithClient这只是一个在客户端连接发生时执行一组同步操作的函数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

事件和函数之间的区别? 的相关文章

  • 如何使用 AngularJS、Devise 和 UI Router 全局实现身份验证?

    我对 Angular 很陌生 所以这可能是一个新手问题 我正在尝试实现一个简单的任务管理器 只是一个练习 以 Rails 作为后端 以 Angular 作为前端 到目前为止 我遵循了教程 一切正常 现在我想在全球范围内实施身份验证 这意味着
  • javascript中文本区域限制每行的字符数

    我试图用 javascript 限制文本区域中每行的字符数 我在这里看到了一些例子 但并不完全符合我的要求 我写了一些东西 只有当你每次添加超过限制时才可以 换句话说 我每行有 10 个字符的限制 如果你总是输入至少 10 个字符就可以正常
  • 通过 AJAX 发送 XML

    我在 jQuery 中创建了一个 xml 文档 如下所示 var xmlDocument
  • 如何将元素的每个单词包装在span标签中?

    div date contents filter function return this nodeType 1 wrap span span 我是新手 认为代码可以解决问题 但它将所有内容都包含在 span 像这样 div class d
  • 通过搜索查找下一个文本并突出显示不起作用

    当在搜索框中搜索任何文本时 它可以找到并突出显示正确的文本 但是当搜索下一个 新文本时 它无法找到下一个 新文本 再次搜索时它不起作用 我无法找到问题 这JS below JS button search click function va
  • 从 JavaScript 将参数传递给 p:remoteCommand

    我想将值传递给remoteCommand来自 JavaScript 如果这是可能的 我该如何做到这一点以及如何在支持 bean 中接收它们 对的 这是可能的 如何执行此操作取决于 PrimeFaces 版本 你可以在PrimeFaces 用
  • 有什么方法可以在不重新加载的情况下更改标头 URL? [复制]

    这个问题在这里已经有答案了 可能的重复 修改URL而不重新加载页面 https stackoverflow com questions 824349 modify the url without reloading the page 使用新
  • JavaScript 逻辑赋值是如何工作的?

    在 javascript 中 如果我们有一些代码 例如 var a one var b q a alert b 逻辑 OR 运算符会将 a 的值分配给 b 并且警报将为 一 这仅限于作业还是我们可以在任何地方使用它 似乎空字符串被视为与未定
  • 无法读取setInterval(Hooks)中的最新状态变量[重复]

    这个问题在这里已经有答案了 我想这是因为 JS 的工作原理 但我想你不会在类中遇到这个问题 在此代码中 let open setOpen React useState false let counter setCounter React u
  • 将 ESLint 与 Airbnb 样式和选项卡结合使用 (React.js)

    我正在开发一个 React js 应用程序 并且正在尝试检查我的代码 我将 ESLint 与 Airbnb 风格一起使用 但出现以下错误 src Test jsx 4 2 error Unexpected tab character no
  • heroku node.js bash:节点:找不到命令

    在 cedar stack 上的 heroku 上部署我的应用程序似乎存在一个奇怪的问题 我的节点进程甚至没有被调用 我的Proc文件如下 web node web js 和我的 package json 文件 name fuuzik ve
  • 如何按值删除数组中的多个项目?

    我正在尝试做一个removeAll 函数 它将删除具有该特定值 而不是索引 的数组的所有元素 当我们对循环进行任何更改时 棘手的部分就出现了 索引往往会移动 使其很难像我们想要的那样工作 并且每次更改时都重新启动循环 这在大数组上效率非常低
  • 您网站上的自定义 jQuery 脚本有多少行代码?多少才算是太多呢?

    对于我们的网站 我使用了大量 jQuery 现在我正在查看基础库顶部的 340 行 jQuery 代码 多少是太多了 我将添加更多内容 我什么时候开始尝试压缩代码并最终转向 OOP 行数并不意味着什么 重要的是你实际上在做什么 您可能拥有
  • 两个日期之间间隔 15 分钟 javascript

    问题 我需要将两个日期 时间戳之间的所有 15 分钟时隙 日期格式 2016 08 10 16 00 00 创建为 HH mm 格式的数组 其中分钟限制为 00 15 30 45 示例 中午 12 30 到下午 2 30 将 gt 12 3
  • React TypeError:x 不是函数

    我在子组件中从父组件调用函数 booksRefresh 但出现错误 类型错误 booksRefresh 不是函数 我不知道为什么 因为 booksRefresh 是一个函数 有人可以帮我解释为什么会出现这个错误吗 这是我的代码 import
  • onTouchEvent()中如何区分移动和点击?

    在我的应用程序中 我需要处理移动和单击事件 一次点击是由一个 ACTION DOWN 操作 多个 ACTION MOVE 操作和一个 ACTION UP 操作组成的序列 理论上 如果您收到 ACTION DOWN 事件 然后收到 ACTIO
  • Axios GET 返回不可读的响应

    我有一个带有 axios 1 2 0 的简单 GET 的 Express 应用程序 const result AxiosResponse await axios get https jsonplaceholder typicode com
  • 如何将命名空间与 TypeScript 外部模块一起使用?

    我有一些代码 基本类型 ts export namespace Living Things export class Animal move export class Plant photosynthesize dog ts import
  • 在 Javascript 中创建数组

    我对 javascript 不太熟悉 并且在用 javascript 制作 2d 或者也许我可能需要 3d 数组时遇到了一些麻烦 我目前需要收集 2 条信息 一个 ID 和一个值 因此我创建了以下内容 var myArray var id
  • 右列固定的 Div 表

    我最近接手了一个非营利网站作为一个项目 我正在使用一个现有的网站 所以我必须使用很多已经编程的东西 所以我所要做的就是创建设计 I made a diagram of basically what I can t figure out ho

随机推荐

  • 如何将 ItemsSource 绑定到私有属性

    如何绑定WPFItemsSource到私人财产
  • 如何匹配字符串的开头?

    我想在start字符串切片的 我目前的做法是 fn main let m true other stuff if m starts with true else if m starts with false 但这比我喜欢的更冗长 另一种方法
  • PyCharm 中的部分存根

    我想在我的项目中引入部分类型注释 例如用于超载 我发现 pep561 引入了部分存根文件支持 我用 PyCharm 开发我的项目并添加相应的 pyi文件 并获得了预期的信息 但 PyCharm 报告在 pyi 文件中找不到参考 当 pyi
  • “纱线应用程序-列表”不显示任何结果

    我在 YARN 集群上运行了一些 Spark 应用程序 该应用程序显示在 YARN UI 的 所有应用程序 页面中http 主机 8088 集群但是yarn application list命令没有给出任何结果 这可能是什么原因造成的 当您
  • 无法从表中删除 UNIQUE 索引

    当我运行这个查询时 ALTER TABLE dbo ROOM DROP INDEX UNIQUE 我收到这条消息 错误 1018 INDEX 附近的语法不正确 如果这是作为表提示的一部分 则现在需要WITH 关键字和括号 有关正确语法 请参
  • SVG 图像无法在 Chrome 上加载(有时)

    您好 我已经开始将网站上的许多旧图像转换为 SVG 格式 但无法让它们显示在页面中 如果我单独打开图像 然后在打开后查看页面 则图像会加载 SVG 位于正确的文件路径我正在引用但没有出现任何内容 尽管在某些刷新中它确实出现了 img cla
  • 使用 CRON 作业运行curl 命令

    我想运行这个语句 curl http localhost 8983 solr dataimport command full import 每 10 分钟使用 CRON 作业一次 我该如何实现这一目标 就像是 crontab lt lt E
  • 为什么 Lucene 不支持对现有文档进行任何类型的更新

    我的用例涉及索引 Lucene 文档 然后在将来的多个场合添加指向此现有文档的术语 而无需为每个新术语删除并重新添加整个文档 因为性能 并且不保留原始术语 我确实知道文档无法真正更新 我的问题是why 或者更准确地说 为什么不支持所有形式的
  • 使用 Kotlin 的 Android Realm - 在包含在依赖项解析中后无法更改配置的依赖项

    我正在尝试让 Realm 在我的项目中工作 我的 Kotlin 版本为 1 2 51 并且禁用了 Instant Run 在我的项目中build gradle文件我添加了以下依赖项 classpath io realm realm grad
  • 为 deviceMotionUpdateInterval 设置的更新频率是实际频率吗?

    分析deviceMotion timestamp我发现DeviceMotion中设置的更新频率并不是实际的更新频率 我实现了一个应用程序来测试 如下我所看到的 update frequency actual frequency averag
  • 是否可以在discord.py中通过名称获取频道ID

    标题说明了一切 我想在公会中获取指定名称的频道 ID 但我在文档中找不到任何可以让我这样做的内容 寻找更发达的机器人 例如Mee6 他们可以选择连接到您的服务器并为您的任何文本频道设置欢迎页面 我尝试过类似的事情 channels disc
  • 如何检查给定的日期时间对象是否在两个日期时间“之间”?

    my event Event objects get id 4 current time datetime datetime now 如何检查我当前的时间是否在它们之间 my event start time lt current time
  • 带有蒙版和 RGB 图像的 Numpy/Scipy

    我正在尝试使用skikit learn 为RGB 图像创建蒙版 我想创建一个仅选择等于 0 10 0 的像素的蒙版 即绿色通道上的 10 然后只显示那些像素 这应该是直接的 类似于http scikit image org docs dev
  • 超时异常导致SqlDataReader关闭?

    我正在尝试从数据库中提取一些二进制数据并将它们写入 pdf 文件 在大多数情况下 这一切进展顺利 但偶尔的数据行似乎会抛出一个特定的错误 超时已过 操作完成之前超时时间已过 或者服务器未响应 请记住 这种情况仅发生在少数行上 并且绝不是随机
  • 如何检查用户是否已登录Google+?

    我正在编写一个需要用户登录的应用程序 我想通过 Google 实现它 并按照以下文章设置我的登录活动LoginActivity Android 版 Google 平台入门 Android 版 Google 登录 流程 用户打开我的应用程序
  • 在 NSString 中包含一个变量?

    这很好用 我们都知道 NSString textoutput Hello outLabel text textoutput 但是 如果你想在其中包含一个变量怎么办 NSString声明如下 NSString textoutput Hello
  • JPA - 从计算列设置实体类属性?

    我刚刚在 Glassfish 3 上运行的简单 Java Web 应用程序中掌握 JPA 持久性提供程序是 EclipseLink 到目前为止 我真的很喜欢它 除了 netbeans glassfish 交互中的错误 但有件事我希望能够做到
  • 将数据插入 Oracle 表的最快方法是什么?

    我正在 PL SQL 中编写数据转换 用于处理数据并将其加载到表中 根据 PL SQL Profiler 转换中最慢的部分之一是实际插入到目标表中 该表有一个索引 为了准备加载数据 我使用表的行类型填充一个变量 然后将其插入表中 如下所示
  • 设置吐司的背景颜色使其成为矩形

    如果我设置我的背景颜色Toast with t getView setBackgroundColor ctx getResources getColor R color myorange 新的 Android 4 4 圆形Toast变成了矩
  • 事件和函数之间的区别?

    我是 Node 新手 我正在努力理解事件和函数之间的主要区别 两者都需要触发 那么如果我们无论如何都必须触发事件 为什么我们还需要事件呢 它与触发函数有何不同 示例代码 var events require events var event