2016-09-29 63 views
1

我有node.js中的数据和socket.io问题。可以在socket.on函数之外获取数据吗?例如:Node.js和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 
+0

是啊,这是可能的,声明一个全局的外部变量并重新分配该变量带有用于外部的数据或将其传递给另一个函数中使用的方法。 'on'方法是一个在运行时调用的事件监听器。所以你需要回调函数。 –

回答

2

你必须在这种情况下,使用一个回调函数,因为socket.on被异步调用。

例如,声明这样的功能:

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); 
    }); 
}); 
+0

是不是和console.logging中的socket.on()回调一样?不会宣布全局变量会更好? – kalin

+0

绝对,但我想他想在这个功能之外处理它,出于某些原因。 – simdrouin