Relisez le livre JavaScript Asynchronous Programming, puis j'ai vu un morceau de code
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;
};
C'est dit dans le livre
var socket=openWebSocket(url,function(){
socket.send('Hello,server!');
});
Cela provoquera un crash du code, ce qui prête à confusion. . Pourquoi l'appel d'une fonction de rappel avant de renvoyer une valeur fait planter le code. J'espère que vous pourrez m'aider à expliquer
La fonction de rappel peut être exécutée avant le retour, et le socket à ce moment-là n'a pas reçu de valeur
Vous pouvez passer un paramètre au callback pour éviter cette situation
Avez-vous défini l'url ? - -
Je me demande si vous pouvez comprendre cette explication ?