您的位置:首页技术文章
文章详情页

html5 - javascript异步编程书中遇到的问题?

【字号: 日期:2022-12-14 13:17:51浏览:57作者:猪猪

问题描述

再看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!’); });

这样会使代码崩溃,不解。。在返回值之前调用回调函数为什么会使代码崩溃。希望大大们能帮我解释解释

问题解答

回答1:

在返回之前回调函数就有可能被执行了,这个时候的socket还没有赋值

可以给callback传一个参数来避免这种情况

回答2:

你url 定义了么- -

回答3:

const func = function (callback) { callback(); return 100;};const x = func(() => { console.log(x); //此处将打印 undefined;});console.log(x); //此处打印 100

这样解释不知道你能否明白?

标签: JavaScript
相关文章: