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

查看:74
本文介绍了html5 - 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!');      
        });

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

解决方案

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

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

这篇关于html5 - javascript异步编程书中遇到的问题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆