猿问

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

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

        });

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

慕哥6287543
浏览 469回答 1
1回答

阿波罗的战车

在返回之前回调函数就有可能被执行了,这个时候的socket还没有赋值可以给callback传一个参数来避免这种情况
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答