2012-03-31 16 views
0

私はjavascriptの初心者です。 私はこのコードJavaScript関数のデータ処理

http.get(options, function(res) { 
    res.setEncoding('utf-8') 
    res.on('data', function (chunk) { 
     var parser = new xml2js.Parser(); 
     if(chunk.length < 50) { 
      console.log('end!'); 
     } else { 
      console.log(chunk); 
     } 
    }); 
}) 

を持っていると私は、コードの残りの部分で変数「チャンク」で動作する必要があります。どのように私は機能からそれをスローすることができますか? - stadartリターンはもちろんここでは機能しません。

答えて

3

これを変数として含めることができます。 chunkは、非同期でAJAXリクエストが原因扱われているので

var ch; 
http.get(options, function(res) { 
    res.setEncoding('utf-8') 

    res.on('data', function (chunk) { 

    var parser = new xml2js.Parser(); 
    if(chunk.length < 50) { 
     ch = chunk; 
    } else { 
     console.log(chunk); 
    } 
}); 

しかし、あなたはおそらく、あなたのコールバック内からメソッドを呼び出すことによって、あなたのプログラムを継続したほうが良いでしょう。

http.get(options, function(res) { 
    res.setEncoding('utf-8') 

    res.on('data', function (chunk) { 
    var parser = new xml2js.Parser(); 
    if(chunk.length < 50) { 
     doSomethingWithChunk(chunk); 
    } else { 
     console.log(chunk); 
    } 
}); 

function doSomethingWithChunk(chunk) { 
    // rest of code here 
} 

EDIT:

GLOBAL.chunk = chunk; 

繰り返しますが、これは必要ありません。

、あなたはglobalオブジェクトを使用することができ、(これは推奨さないです)nodejsでグローバル変数を設定するにはグローバルを使用する必要がないようにコードを変更することを検討してください。

+0

しかし、変数chはまだ関数の内容から利用できません!私はそれ以上のコード全体でそれを使用したい! – yety

+0

これはnodejsです。btw – yety

+0

あなたはあなたの質問にnodejsを指定していません。 – Jivings