Rumah > Soal Jawab > teks badan
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
天蓬老师2017-05-16 13:44:47
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
漂亮男人2017-05-16 13:44:47
const func = function (callback) {
callback();
return 100;
};
const x = func(() => {
console.log(x); //此处将打印 undefined;
});
console.log(x); //此处打印 100
Saya tertanya-tanya adakah anda boleh memahami penjelasan ini?