forEach中的节点延迟和异步函数

时间:2013-07-09 11:16:09

标签: node.js stream lazy-loading

我尝试用(aprox .50 000行)读取文件并在mongodb中解析后保存每一行。 Mongodb保存功能是异步的。为了遍历文件,我使用了node-lazy模块。

我得到的是只有一部分记录保存在mongodb中(保存回调称为并非所有功能)

var stream = fs.createReadStream(inputFile)

new lazy(stream)
    .lines
    .map(String)
    .forEach(function(line){
        db[collection].save(parseLine(line), function(err){

            if (err){
                console.log(err)
            } else {
                count++;
            }
        })
        }

)

所以没有错误,但是计数<实际记录(行)计数;

所以我想知道解决问题的最佳方法是什么。

UPD:

我通过在forEach中使用syncronios解析函数解决了这个问题,然后在完全读取文件时,我使用async.mapSeries将数据保存到mongodb。

但我仍然想知道是否有可能处理与节点懒惰的异步,我没有在文档中找到它,也许它只是不可能。

1 个答案:

答案 0 :(得分:0)

我知道它的月份已经过期了,但我们有人在这里回答了这个问题:

Node and Lazy: How do I know when it's done?