Node.js和socket.on数据

我有node.js中的数据和socket.io问题。 可以在socket.on函数外部获取数据吗? 例:

var newdata=new Array(); $(document).ready(function(){ socket.on('Select', function(data){ //console.log(data.products[0][1]); for(i=0; i<data.products[0].length; i++) { newdata.push(data.products[0][i]); } console.log(newdata); //array with objects }); console.log(newdata); //undefined - here i want to get data 

在这种情况下你必须使用callback函数,因为socket.on是asynchronous调用的。

例如,声明一个这样的函数:

 function processData(newdata) { console.log(newdata); } 

然后在你的socket.on('Select', function (data) { ... }); 你可以调用processData(newdata) ,如下所示:

 function processData(newdata) { console.log(newdata); } $(document).ready(function(){ socket.on('Select', function(data){ for(i=0; i<data.products[0].length; i++) { newdata.push(data.products[0][i]); } processData(newdata); }); });