我正在使用具有以下事件的Websocket(javascript):
ctrlScope.conn.onerror = function() {
ctrlScope.updateStatus();
};
ctrlScope.conn.onclose = function() {
ctrlScope.updateStatus();
};
ctrlScope.conn.onopen = function() {
ctrlScope.updateStatus();
};
如您所见,我正在使用这些事件更新聊天状态,但看起来是重复的,有没有办法将所有这些Websocket事件组合在一起?
ctrlScope.conn[onError][onClose][onOpen] = function() {
ctrlScope.updateStatus();
};
此外,还有一个Websocket变量:readyState,它提供与事件相同的连接状态。这可以代替麻烦的功能,但是$ watch不能使用它。
请一些帮助:(
最佳答案
我没有尝试过这段代码,但是理论上您可以这样写:
var handlers = ["onerror","onclose","onopen"];
for(var i=0;i<handlers.length;i++){
ctrlScope.conn.[handlers[i]] = ctrlScope.updateStatus;
};
这是利用javascript的能力来使用点表示法(ctrlScope.conn.onopen)或数组表示法(ctrlScope.conn [“ onopen”])来引用元素的功能。