Baca buku JavaScript Asynchronous Programming sekali lagi, dan kemudian saya melihat sekeping kod
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;
};
Tertera dalam buku
var socket=openWebSocket(url,function(){
socket.send('Hello,server!');
});
Ini akan menyebabkan kod ranap, yang mengelirukan. . Mengapakah memanggil fungsi panggil balik sebelum mengembalikan nilai merosakkan kod. Saya harap anda semua boleh membantu saya menerangkan
Fungsi panggil balik boleh dilaksanakan sebelum kembali, dan soket pada masa ini belum diberikan nilai
Anda boleh menghantar parameter kepada panggilan balik untuk mengelakkan situasi ini
Adakah anda mentakrifkan url?
Saya tertanya-tanya adakah anda boleh memahami penjelasan ini?