variables - Websockets - 阻止在消息上分配的变量发生变化
问题描述
我正在使用带有 node.js 的 ws 库。我在 node.js Web 应用程序和浏览器之间有一个 websocket 连接。我通过 websocket 向 web 应用程序发送消息来获取浏览器“请求”数据。Web 应用程序解析消息以确定浏览器想要什么。因此,如果“query_name”是“member_DOB”,则 Web 应用程序将返回成员的出生日期。你明白了。
为此,我需要将传入的“query_name”分配给我的网络应用程序上的一个变量。问题是,如果我同时收到多条消息,则将变量分配给第一个“query_name”,但在函数完成运行之前,将变量重新分配为等于下一条传入消息“query_name”。
如何将变量链接到传入的每条消息并防止其更改?
var query_name;
const WebSocket = require('ws');
const wss = new Websocket.Server({server:httpsServer});
ws.on('message', function (data) {
query_name = JSON.parse(data)[0];
// do a whole bunch of stuff with query_name;
}
解决方案
“函数在 JavaScript 中充当闭包,因此创建了一个范围” https://developer.mozilla.org/en-US/docs/Glossary/Scope。
因此,在函数内部定义 var 或 const,以便它可以绑定到被调用函数的特定实例。
const WebSocket = require('ws');
const wss = new Websocket.Server({server:httpsServer});
ws.on('message', function (data) {
const query_name = JSON.parse(data)[0];
// do a whole bunch of stuff with query_name;
}
推荐阅读
- ios - 检测何时在 Apple Watch 上点击了 SKNode
- react-native - 在 webview 调整大小应用程序中运行 React Native Expo
- android-studio - Kotlin中的水平圆形RecyclerView?
- javascript - Vis.JS Graph3d:如何获取画布/上下文?
- html - 响应式导航栏问题(包括 jQuery)
- android - Android json映射改造
- c++ - 使用 lambda 和 constexpr-if 初始化静态布尔会给出地址错误
- c# - C# 中具有一个用于多个端点的类的 Firebase 函数
- python-3.x - Pyppeteer RequestSetIntercept 函数:从未等待协程
- pine-script - 如何输入实时 RSI 值?