2017-05-26 10 views
1

データベースからフェッチされたすべてのデータをarr_objに格納し、この変数int async.forEachLimit関数を使用したいとします。このため、私はasync.series関数を使用しましたが、sleep(1000)以外はすべて正常に動作し、async.seriesの2番目の関数が呼び出されるとすぐにコードがスリープしてから、すべての結果が一緒に返されます。NodeJsで初心者にはすべてのことについての多くのアイデア。システム - スリープが正しく機能しない

var sleep = require('system-sleep'); 
// 
// 
var arr_obj = []; 
    async.series([ 
     function (callback) { 
      Service.listAllUser(req.body, function (err, data) { 
       if(err) return callback(err); 
       arr_obj = data.toJSON(); 
       callback(); 
      }); 
     }, 
     function (callback1) { 
     console.log(arr_obj); 
      async.forEachLimit(arr_obj, 1, function (item, callback) { 
       Quality_Service.qualityService(item, function (err, data) { 
        if (err) return next(err); 
        console.log(data); 
       }); 
       sleep(1000); 
       callback(); 
      }); 
      callback1(); 
     } 
    ], function (err) { //This function gets called after the two tasks have called their "task callbacks" 
     if (err) return next(err); 
     res.send("okay"); 
    }); 
+0

で、foreachの内部でコールバックを使用してみてくださいまた、2番目の関数が呼び出された直後にスリープする必要があるため、 "設計通りに"動作するように思えます。次に、forEachLimitの 'function'コールバックの名前として" callback "以外のものを使用することをお勧めします。最後に、私は実際の質問がここにあるのだろうかと思います:あなたは何を期待していますか? – Gyuri

+0

set timeoutとカウンタを使ってスリープを通過しようとしているのを確認しようとしています – atjoshi

+0

@GyuriプログラムがQuality_Service.qualityService関数の後に毎回1000msスリープする必要があります。 async.seriesが呼び出されます。 –

答えて

0

意味は何を "一緒にすべての結果を与える" ん?のsetTimeout

async.forEachLimit(arr_obj, function (item, callback) { 
      Quality_Service.qualityService(item, function (err, data) { 
       if (err) return next(err); 
       setTimeout(callback, 1000, err); 
      });     
     }); 
+1

助けてくれてありがとう –

関連する問題