2016-09-29 2 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

これはsocket.on()コールバックでconsole.loggingと同じではありませんか?グローバル変数の方が良いと宣言しませんか? – kalin

+0

絶対に、私は彼がこの機能の外で何らかの理由でそれを処理したいと思います。 – simdrouin

関連する問題