事件处理场景中+=运算符的作用是什么?以ib_insync的updateEvent绑定为例
关于scanData.updateEvent += onScanData中+=的含义解释
1. 运算符本质
scanData.updateEvent是ib_insync框架中封装的Event类实例,该类针对+=运算符做了自定义重载,此处+=的作用是将指定的回调函数追加到当前事件的回调监听列表中。
2. 为什么用+=而非=
=属于赋值操作,如果使用scanData.updateEvent = onScanData,会直接覆盖该事件原有的整个回调监听列表,导致之前绑定的其他回调全部失效。
而+=是追加操作,支持同一个事件绑定多个不同的回调函数,当事件被触发时,所有已绑定的回调会按照绑定顺序依次执行。
3. 实际追加的内容
此处追加的是onScanData这个函数的引用(不是函数执行后的返回值),Event实例会在内部维护一个回调列表存储所有追加进来的函数引用。
4. 查看已追加的回调对象
你可以直接访问scanData.updateEvent.listeners属性,这个属性就是存储所有已绑定回调函数的列表,可直接遍历、查看列表内的所有函数对象。
额外补充:配套+=的还有-=运算符,作用是从回调监听列表中移除指定的回调函数,用法为scanData.updateEvent -= onScanData。
内容的提问来源于stack exchange,提问作者user312087
相关产品推荐
相关产品推荐

