当前位置: 首页 > 面试题库 >

注册后监听事件是否安全?

佴博实
2023-03-14
问题内容

我是NodeJS的新手,正在学习它如何与流一起工作。读一本书,我发现了以下示例代码:

var CountStream = require('./countstream');
var countStream = new CountStream('book');
var http = require('http');

http.get('http://www.manning.com', function(res) {
    res.pipe(countStream);
});

countStream.on('total', function(count) {
    console.log();
});

在此代码段中,我们先调用http.getmethod,然后等待回调( 第1部分 )。

在下一行,我们正在监听total事件( 第2部分 )。

问题: 如果在第1部分和第2部分之间发生延迟,那么首先执行第1部分的回调(在第2部分开始侦听total事件之前。那是真的会丢失第一个数据块)吗?


问题答案:

不,因为您 不是在“等待” 回调。回调是 异步的 ,将在http.get函数返回后执行。第2部分将在调用回调函数(第1部分)之前执行。

仅在构造之后构造一个异步事件发射器并注册事件处理程序是完全安全的(只要它是同步发生的),因为事件只会在事件循环的下一轮发出。



 类似资料:
  • 本文向大家介绍什么是事件监听?相关面试题,主要包含被问及什么是事件监听?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: addEventListener()方法,用于向指定元素添加事件句柄,它可以更简单的控制事件,语法为 element.addEventListener(event, function, useCapture); 第一个参数是事件的类型(如 "click" 或 "mouse

  • Blade 中提供一个方法帮助开发者可以自定义的监听应用程序运行中的一些生命周期。比如 Session 的创建与销毁,应用启动结束后等。 支持的事件类型有如下: public enum EventType { SERVER_STARTING, // 服务准备启动 SERVER_STARTED, // 服务启动成功 SERVER_STOPPING, //

  • Nutz.Ioc 容器有三种事件: 对象被创建(create事件) 对象被从容器中取出(fetch事件) 对象被销毁(depose事件) 在这三种时刻,你如果想做一些特殊的操作,比如,当一个数据源被销毁时,你希望能够关闭所有的连接, 声明一下,你想监听什么事件,以及怎么监听。 注: 如果你的对象是 "singleton: false",那么容器创建了对象后就会立即忘记它的存在。因为鬼才知道 你打算

  • 全局事件 事件监听 注解监听 以imi/src/Listener/Init.php为例 <?php namespace Imi\Listener; use Imi\Event\EventParam; use Imi\Event\IEventListener; use Imi\Bean\Annotation\Listener; /** * @Listener(eventName="IMI.IN

  • Chrome DevTools命令行API提供了多种方式来观察和检查事件监听器。JavaScript在交互式页面中起着中心作用,并且浏览器为您提供了一些有用的工具来调试事件和事件处理程序。 TL;DR 使用monitorEvents()监听某一类型的事件。 使用unmonitorEvents()停止监听。 使用getEventListeners()获取DOM元素的监听器。 使用Event List

  • sTree触发容器上的各种事件。您可以查看所有事件的列表以了解要听的内容。 要获取有关事件的更多信息,请检查其data参数。 在大多数情况下,涉及节点的情况下,您将传递整个节点对象。如果在某处获取ID字符串并想要检查该节点,则只需使用 .get_node()。内部节点对象与用于加载的JSON格式非常相似,但是具有一些额外的属性,这可能很有用:children是节点的直接子节点的children_d