首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Node.js -对对象使用异步库- async.foreach

Node.js -对对象使用异步库- async.foreach
EN

Stack Overflow用户
提问于 2012-05-01 04:19:54
回答 2查看 75.2K关注 0票数 53

我使用了节点async lib - https://github.com/caolan/async#forEach,并希望遍历一个对象并打印出它的索引键。一旦完成,我想执行一个回调。

这是我到目前为止所拥有的,但'iterating done'从未见过:

代码语言:javascript
复制
    async.forEach(Object.keys(dataObj), function (err, callback){ 
        console.log('*****');

    }, function() {
        console.log('iterating done');
    });  

  1. 为什么没有调用最后一个函数?
  2. 如何打印对象索引键?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-01 04:43:46

最后一个函数不会被调用,因为async.forEach要求您为每个元素调用callback函数。

使用类似如下的内容:

代码语言:javascript
复制
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');
});  
票数 122
EN

Stack Overflow用户

发布于 2017-04-24 02:32:33

.it是由Async Lib提供的一个非常有用和强大的函数,它有3个字段1-集合/数组2-迭代3-回调,集合引用对象的数组或集合,迭代引用每次迭代,回调是可选的。如果我们给回调,那么它将返回响应,或者说你想在前台显示的结果

并行地将函数iteratee应用于coll中的每一项。使用列表中的项调用iteratee,并在完成时调用一个回调函数。如果迭代器将错误传递给它的回调函数,则会立即调用主回调函数(用于each函数)并显示错误。

请注意,由于此函数并行地将iteratee应用于每个项目,因此不能保证iteratee函数将按顺序完成。

例如-

代码语言:javascript
复制
 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);       
                    }
                });
        }
    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10390041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档