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");
});
で、foreachの内部でコールバックを使用してみてくださいまた、2番目の関数が呼び出された直後にスリープする必要があるため、 "設計通りに"動作するように思えます。次に、forEachLimitの 'function'コールバックの名前として" callback "以外のものを使用することをお勧めします。最後に、私は実際の質問がここにあるのだろうかと思います:あなたは何を期待していますか? – Gyuri
set timeoutとカウンタを使ってスリープを通過しようとしているのを確認しようとしています – atjoshi
@GyuriプログラムがQuality_Service.qualityService関数の後に毎回1000msスリープする必要があります。 async.seriesが呼び出されます。 –