gpt4 book ai didi

javascript - Nodejs EventEmitter.once() 如何工作?

转载 作者:数据小太阳 更新时间:2023-10-29 06:06:53 26 4
gpt4 key购买 nike

来自 nodejs source code (LOC 179) ,我们有以下内容:

EventEmitter.prototype.once = function(type, listener) {

/** ... **/

function g() { /** ... **/ }

g.listener = listener; // => ???
this.on(type, g);

return this;
};

到目前为止,我的想法是这样的:

EventEmitter.once() 设置一个 type 事件,并在通过 调用回调 listener 后立即将其删除g()。但是 g.listener = listener; 这行到底做了什么?

它是否在构造函数g()调用时为构造函数对象添加了一个函数对象属性listener

最佳答案

设置它以便您稍后可以调用 removeListener

如果你调用this.once(event, listener),然后又调用了this.removeListener(listener),代码将找不到listener 在列表中,因为它包含在 g 中。

这就是为什么在 L214 进行测试的原因做:

 if (list === listener ||
(util.isFunction(list.listener) && list.listener === listener)) {

关于javascript - Nodejs EventEmitter.once() 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20881224/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com