我使用了节点async lib - https://github.com/caolan/async#forEach,并希望遍历一个对象并打印出它的索引键。一旦完成,我想执行一个回调。
这是我到目前为止所拥有的,但'iterating done'
从未见过:
async.forEach(Object.keys(dataObj), function (err, callback){
console.log('*****');
}, function() {
console.log('iterating done');
});
发布于 2012-05-01 04:43:46
最后一个函数不会被调用,因为async.forEach
要求您为每个元素调用callback
函数。
使用类似如下的内容:
async.forEach(Object.keys(dataObj), function (item, callback){
console.log(item); // print the key
// tell async that that particular element of the iterator is done
callback();
}, function(err) {
console.log('iterating done');
});
发布于 2017-04-24 02:32:33
.it是由Async Lib提供的一个非常有用和强大的函数,它有3个字段1-集合/数组2-迭代3-回调,集合引用对象的数组或集合,迭代引用每次迭代,回调是可选的。如果我们给回调,那么它将返回响应,或者说你想在前台显示的结果
并行地将函数iteratee应用于coll中的每一项。使用列表中的项调用iteratee,并在完成时调用一个回调函数。如果迭代器将错误传递给它的回调函数,则会立即调用主回调函数(用于each函数)并显示错误。
请注意,由于此函数并行地将iteratee应用于每个项目,因此不能保证iteratee函数将按顺序完成。
例如-
var updateEventCredit = function ( userId, amount ,callback) {
async.each(userId, function(id, next) {
var incentiveData = new domain.incentive({
user_id:userId,
userName: id.userName,
amount: id.totalJeeneePrice,
description: id.description,
schemeType:id.schemeType
});
incentiveData.save(function (err, result) {
if (err) {
next(err);
} else {
domain.Events.findOneAndUpdate({
user_id: id.ids
}, {
$inc: {
eventsCredit: id.totalJeeneePrice
}
},{new:true}, function (err, result) {
if (err) {
Logger.info("Update status", err)
next(err);
} else {
Logger.info("Update status", result)
sendContributionNotification(id.ids,id.totalJeeneePrice);
next(null,null);
}
});
}
});
https://stackoverflow.com/questions/10390041
复制相似问题