Javascript 系统-睡眠无法正常工作
我想将从数据库获取的所有数据存储在arr_obj中,然后使用变量int async.forEachLimit函数。由于这个原因,我使用了async.series函数,除了sleep(1000)之外,其他一切都可以正常工作,只要调用async.series的第二个函数,代码就会休眠,然后一起给出所有结果Javascript 系统-睡眠无法正常工作,javascript,node.js,async.js,Javascript,Node.js,Async.js,我想将从数据库获取的所有数据存储在arr_obj中,然后使用变量int async.forEachLimit函数。由于这个原因,我使用了async.series函数,除了sleep(1000)之外,其他一切都可以正常工作,只要调用async.series的第二个函数,代码就会休眠,然后一起给出所有结果 var sleep = require('system-sleep'); // // var arr_obj = []; async.series([ function
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内部使用callback,并使用setTimeout
async.forEachLimit(arr_obj, function (item, callback) {
Quality_Service.qualityService(item, function (err, data) {
if (err) return next(err);
setTimeout(callback, 1000, err);
});
});
尝试在foreach内部使用callback,并使用setTimeout
async.forEachLimit(arr_obj, function (item, callback) {
Quality_Service.qualityService(item, function (err, data) {
if (err) return next(err);
setTimeout(callback, 1000, err);
});
});
“一起给出所有结果”是什么意思?而且,这听起来像是“按设计”工作,因为它应该在调用第二个函数后立即休眠。然后,最好使用“callback”以外的名称作为forEachLimit
函数的回调名称。最后,我想知道这里的实际问题是什么:您期望什么?尝试使用set timeout和使用counter来查看它是否通过sleep@Gyuri我希望程序在函数Quality\u Service.qualityService之后每次睡眠1000毫秒,相反,只要调用async.series中的第二个函数,它就会休眠一段时间。您使用什么来sleep()
?一个选项是使用与async/series示例中使用的相同逻辑:在异步回调之前(或者更确切地说,在回调前后)使用setTimeout
,而不是sleep
,在您的例子中是callback1:当我不使用async.series并直接在函数Quality\u Service.qualityService中传递arr\u obj时,然后是sleep()每次调用函数后都要等待指定的时间。“一起给出所有结果”是什么意思?而且,这听起来像是“按设计”工作,因为它应该在调用第二个函数后立即休眠。然后,最好使用“callback”以外的名称作为forEachLimit函数的回调名称。最后,我想知道这里的实际问题是什么:您期望什么?尝试使用set timeout和使用counter来查看它是否通过sleep@Gyuri我希望程序在函数Quality\u Service.qualityService之后每次睡眠1000毫秒,相反,只要调用async.series中的第二个函数,它就会休眠一段时间。您使用什么来sleep()
?一个选项是使用与async/series示例中使用的相同逻辑:在异步回调之前(或者更确切地说,在回调前后)使用setTimeout
,而不是sleep
,在您的例子中是callback1:当我不使用async.series并直接在函数Quality\u Service.qualityService中传递arr\u obj时,然后是sleep()每次调用函数后等待指定的时间。