Lesen Sie das Buch „JavaScript Asynchronous Programming“ noch einmal, und dann habe ich einen Code gesehen
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;
};
So steht es im Buch
var socket=openWebSocket(url,function(){
socket.send('Hello,server!');
});
Dies führt zum Absturz des Codes, was verwirrend ist. . Warum führt der Aufruf einer Rückruffunktion vor der Rückgabe eines Werts zum Absturz des Codes? Ich hoffe, ihr könnt mir beim Erklären helfen
在返回之前回调函数就有可能被执行了,这个时候的socket还没有赋值
可以给callback传一个参数来避免这种情况
你url 定义了么- -
这样解释不知道你能否明白?