2016-11-03 11 views

答えて

0

この空でないタブでコールバック(タブ)を返す方法を見つけようと、空

あるnodejs正当なトリッキーです:あなたはどれだけ多くの応答を追跡する必要があり、コールバック(タブ)はそれらをすべて持っているときにのみ。それは実際の簿記作業です。

asyncのようなライブラリには、非同期ループなどの機能があります。あなたは手で行うことができますが、その道はテストされています。

0

Regular forループは、そのような非同期呼び出しでは機能しません。 async.whilst()などの非同期要求()呼び出しの流れを制御できるものを使用する必要があります。ここに改訂コードがあります(非同期モジュールのインストールを忘れないでください):

var async = require('async'); 
function getUserEvents(callback){ 
    var tab = []; 
    var i = 0; 

    async.whilst(
    function() { return i < 100; }, 
    function(cb) { 
     request("mysite/list?page="+i, function (err, res, body) { 
     if (!err && res.statusCode == 200) { 
      tab.push(JSON.parse(body)); 
     } 
     i++; 
     cb(); 
     }); 
    }, 
    function (err) { 
     // finish processing pages 0-99 
     callback(tab) 
    } 
); 
} 
+1

ありがとうございます – Rayan

関連する問題