socket.on('news', obj.socketEvent)
这些对象寿命短暂且经常创建,生成许多订阅。这似乎是一种内存泄漏和容易出错的情况,按照直觉可以通过以下方式来防止:
socket.off('news', obj.socketEvent)
在对象被删除之前执行此操作,但遗憾的是,套接字中没有一个“off”方法。是否有另一个方法用于此操作?编辑:未找到答案,因此我将一个空方法分配给覆盖原始事件处理程序的包装方法,以下是示例。
var _blank = function(){};
var cbProxy = function(){
obj.socketEvent.apply(obj, arguments)
};
var cbProxyProxy = function(){
cbProxy.apply ({}, arguments)
}
socket.on('news', cbProxyProxy);
// ...and to unsubscribe
cbProxy = _blank;
cbProxy
是由OP定义的回调方法。 - Andrew Magee