- 66
- 0
看了下electron的代码
class IncomingMessage extends EventEmitter {
// Docs: http://electron.atom.io/docs/api/incoming-message
/**
* Emitted when a request has been canceled during an ongoing HTTP transaction.
*/
on(event: 'aborted', listener: Function): this;
once(event: 'aborted', listener: Function): this;
addListener(event: 'aborted', listener: Function): this;
removeListener(event: 'aborted', listener: Function): this;
/**
* The data event is the usual method of transferring response data into
* applicative code.
*/
on(event: 'data', listener: (
/**
* A chunk of response body's data.
*/
chunk: Buffer) => void): this;
once(event: 'data', listener: (
/**
* A chunk of response body's data.
*/
chunk: Buffer) => void): this;
addListener(event: 'data', listener: (
/**
* A chunk of response body's data.
*/
chunk: Buffer) => void): this;
removeListener(event: 'data', listener: (
/**
* A chunk of response body's data.
*/
chunk: Buffer) => void): this;
/**
* Indicates that response body has ended.
*/
on(event: 'end', listener: Function): this;
once(event: 'end', listener: Function): this;
addListener(event: 'end', listener: Function): this;
removeListener(event: 'end', listener: Function): this;
/**
* error Error - Typically holds an error string identifying failure root cause.
* Emitted when an error was encountered while streaming response data events. For
* instance, if the server closes the underlying while the response is still
* streaming, an error event will be emitted on the response object and a close
* event will subsequently follow on the request object.
*/
on(event: 'error', listener: Function): this;
once(event: 'error', listener: Function): this;
addListener(event: 'error', listener: Function): this;
removeListener(event: 'error', listener: Function): this;
headers: any;
httpVersion: string;
httpVersionMajor: number;
httpVersionMinor: number;
statusCode: number;
statusMessage: string;
}
对于进入消息提供的API
目前程序是一个与telet交互的程序,输出的内容渲染到了web页,所以on('data')已经用了,而且不能被移除。
移除了页面就不输出连续的内容了,必须保持监听。
现在因为要做触发器,所以需要在另外一个类里监听'data'事件
用eventNames() 打印可以看到[ 'end', 'finish', '_socketEnd', 'data' ]
所以我的问题是,如何再增加一个对'data'的监听事件?
用过addListener,但是打印事件名还是[ 'end', 'finish', '_socketEnd', 'data' ]所以也没办法用removeListener移除。
求解
- 共 0 条
- 全部回答
-
我瞎跟我走 普通会员 1楼
在Electron中,事件可以被添加和取消监听多次,但是不能被添加监听多次后删除之前添加的事件。这是因为Electron事件监听器是一种全局注册机制,也就是说,当一个事件被添加到DOM元素上时,它会被所有已注册的事件监听器监听到。这导致如果在同一时刻添加了多个事件监听器,这些事件监听器会被共享同一份事件监听器列表,从而导致事件处理函数被重复调用。
如果你想添加多个事件监听器,但不想影响到之前添加的事件处理函数,你可以使用
events模块中的on和once方法。on方法用于添加一个事件监听器,once方法用于添加一个事件监听器,但只在第一次被添加时被调用。以下是一个简单的例子:
```javascript const events = require('events');
// 创建一个事件监听器实例 const eventListener = new events.EventEmitter();
// 添加一个事件监听器 eventListener.on('event', () => { console.log('事件触发'); });
// 添加一个事件监听器,只在第一次被添加时被调用 eventListener.once('event', () => { console.log('事件触发,但已存在'); });
// 阻止添加事件监听器 eventListener.removeAllListeners('event');
// 使用同一个事件监听器 eventListener.on('event', () => { console.log('事件触发'); }); ```
在这个例子中,我们首先创建了一个事件监听器实例,然后添加了两个事件监听器:一个用于添加事件,另一个用于添加事件,并且只在第一次被添加时被调用。然后,我们使用
removeAllListeners方法将事件监听器从DOM元素上移除,这确保了每个事件监听器只会被添加一次。注意,
eventListener.removeAllListeners('event')方法不会移除已经添加的事件监听器,它只会移除那些已经不再被添加的事件监听器。如果你需要移除所有已经添加的事件监听器,你需要使用events.removeAllListeners方法,而不是单独添加每个事件监听器。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
