再看JavaScript异步编程这本书,然后看到了一段代码
var webSocketCache = {};
function openWebSocket(serverAddress, callback) {
var socket;
if (serverAddress in webSocketCache) {
socket = webSocketCache[serverAddress];
if (socket.readyState === WebSocket.OPEN) {
callback();
} else {
socket.onopen = _.compose(callback, socket.onopen);
};
} else {
socket = new WebSocket(serverAddress);
webSocketCache[serverAddress] = socket;
socket.onopen = callback;
};
return socket;
};
书中说
var socket=openWebSocket(url,function(){
socket.send('Hello,server!');
});
这样会使代码崩溃,不解。。在返回值之前调用回调函数为什么会使代码崩溃。希望大大们能帮我解释解释
在返回之前回调函数就有可能被执行了,这个时候的socket还没有赋值
可以给callback传一个参数来避免这种情况
你url 定义了么- -
这样解释不知道你能否明白?