我正在使用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"])引用元素的能力