javascript - Array 的 forEach 方法是异步的?
高洛峰
高洛峰 2017-04-10 16:42:07
[JavaScript讨论组]

在 NodeJS 中写了一段数组循环的js代码,发现forEach打印的index值不是从零升序,去 Mozilla 社区查了一下也没说默认是async啊,ES6有这一条吗

打印index如下

2
6
3
8
1
0
5
7
15
4
10
13
11
...

源代码

//返回所有标签
Post.getTags = function(callback) {
  //打开数据库
  MongoClient.connect(connectionString, dbOptions, function(err, db) {
    if (err) {
      return callback(err);
    }
    //读取 posts 集合
    db.collection('posts', function (err, collection) {
      if (err) {
        db.close();
          return callback(err);
        }
      //distinct 用来找出给定键的所有不同值
      collection.distinct("tags", function (err, docs) {
        console.log(docs)
        if (err) {
          db.close();
          return callback(err);
        }
                var list = [];
                docs.forEach(function (val, index) {
                    db.collection('posts', function (err, collection) {
                        if (err) {
                            db.close();
                            return callback(err);
                        }
                        var count = collection.count({
                            "tags" : {
                                "$in" : [val]
                            }
                        }, function (err, total) {
                            var tag = {
                                "tag" : val,
                                "num" : total
                            }
                            list.push(tag);
                            console.log(index);
                            if (index === docs.length) {
                                callback(null, list);
                            }
                        })
                    });
                });
      });
    });
  });
};

docs 的值就是一个数组 ['js', 'css', ...]
缩进粘过来之后乱了,sorry

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(1)
天蓬老师

你都把打印index的代码放到一个明显是异步的回调函数里了…

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号