如何使Socket客户端发出的值在全局范围内可用?

时间:2019-01-15 12:50:00

标签: javascript socket.io

我正在客户端监听一个自定义事件,其中作为“自定义事件”的一部分发出的值“ movieArr”在“ movieArr1”引用的全局范围内不可用。为什么'movieArr1'仍会打印未定义,而movieArr会打印正确的值?

let movieArr1=[];
socket.on('sendMovieList',function(movieArr) {
         console.log('received movielist2'+movieArr.length+':'+Array.isArray(movieArr));
         movieArr1=movieArr;
});
console.log(movieArr1);

1 个答案:

答案 0 :(得分:0)

您的代码应类似于:

var movieArr1=[];
socket.on('sendMovieList',function(movieArr) {
         console.log('received movielist2'+movieArr.length+':'+Array.isArray(movieArr));
         movieArr1.push(movieArr);
         console.log(movieArr1)
});
//console.log(movieArr1);

请记住,movieArr的范围仅限于其功能范围。在其定义的功能范围之外无法访问。 您可以像上面的示例一样将本地值填充为全局值。 此外,如果在事件触发后检查[]的值,您将可以看到该值反映在全局数组中。

用法应类似于以下工作示例:

let movieArr1=[];
setInterval(function() {
         movieArr1.push(123);
         console.log(movieArr1.toString());
},2000);