gpt4 book ai didi

javascript - 在脚本标签之间复制变量值

转载 作者:行者123 更新时间:2023-12-03 09:06:25 25 4
gpt4 key购买 nike

我有一个 HTML 文件,其中有两个 <script>标签。在一个标签中,我使用 socket.io 接收数据库并在另一个库中处理它。我的代码如下 -

<script>
nwmsg=[];
var socket = io.connect('http://localhost:3000/');

socket.on('message', function (data) {
nwmsg=data.readings.slice();
console.log('received a message: ', nwmsg[0]); // Log A
});
</script>

<script>
.
.
var temps=nwmsg.slice();
console.log(temps[0]); // Log B
.
.
</script>

在脚本中,我将两个日志语句标记为日志 A 和日志 B。日志 A 正确打印接收到的数据( data.readings 是 JSON 对象数组)。但是,日志 B 显示为 undefined在控制台上。

有人能弄清楚我在这里犯了什么错误吗?

谢谢

最佳答案

这不是两个脚本标签之间“复制”的问题,而是异步的问题。socket.io 传递消息需要一些时间。基本上,您在消息到达客户端之前正在执行日志 B。这就是 socket.io 使用回调来确保消息已到达的原因。

所以,结论是:如果你想从socket.io消息中访问数据,你必须在它的回调中或者在只有在成功回调之后才能执行的函数中进行。

<script>
nwmsg=[];
var socket = io.connect('http://localhost:3000/');

socket.on('message', function (data) {
nwmsg=data.readings.slice();
console.log('received a message: ', nwmsg[0]); // Log A
nwmsgSlice();
});
</script>

<script>
.
.
var temps;
function nwmsgSlice() {
temps=nwmsg.slice();
console.log(temps[0]); // Log B
}
.
.
</script>

关于javascript - 在脚本标签之间复制变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32179350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com