javascript - 在 websocket 中为 onmessage 中的变量赋值

标签 javascript websocket

我尝试在此处的 onmessage 函数中为变量赋值:

socket = new WebSocket(ws_scheme +"127.0.0.1:8000/chat/");
var incomeData;
socket.onmessage = function(e) {
     incomeData='hello'+ e.data; 
     console.log('inside function:'+incomeData)
}
socket.onopen = function() { 
    socket.send(" from websocket");
}
 console.log(incomeData)

控制台将第一个日志显示为未定义,第二个“内部函数:来自 websocket 的问候”。如何获得分配的变量并将值也保留在函数之外?为什么第二个 console.log 先出现?

最佳答案

incomeData 是在全局范围内定义的,当第一次使用 console.log(incomeData) 打印时没有分配任何内容,因此您得到 undefined 错误信息。然后调用套接字 onmessage 并为您分配 e.data 值,然后 console.log 打印出来。

您可以像这样处理 socket.onmessage 并将 e.data 传递给回调函数:

socket = new WebSocket(ws_scheme +"127.0.0.1:8000/chat/");

socket.onmessage = function(e) {
    socket_onmessage_callback(e.data);
}

socket.onopen = function() { 
    socket.send(" from websocket");
}

function socket_onmessage_callback(data) {
    console.log('inside function socket_onmessage_callback:', data)
}

如果需要,您甚至可以使用 incomeData 全局变量,但我认为这不是必需的。如果您需要使用 incomeData,可以更新我的答案。

关于javascript - 在 websocket 中为 onmessage 中的变量赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41322455/

相关文章:

javascript - jQuery show/hide options if first one selected, 默认显示第二个选择的选项

javascript - 存储在 Angular 服务上的数据似乎不是持久的

javascript - 如何有效地对复杂的 JSON 对象进行排序?

java - 客户端在 websocket 中一段时间​​后自动断开连接

javascript - 从 Microsoft Graph API(测试版)通信 API 获取实时更新

websocket - 带有 WebSocket 的原始 javascript GraphQL 订阅不起作用

javascript - 如何设置一个新类不适用于 Bootstrap 和 jQuery?

javascript - 这是什么类型的 JavaScript 数据类型?

使用 Mongoose 创建双网络/套接字服务器

websocket - 实现对 HTTP/2 代理的 websocket 支持