【发布时间】:2015-12-18 09:36:22
【问题描述】:
我正在练习 node.js,我有一些疑问。
我有一个 csv 文件 (users.csv),并且我创建了一个节点模块 (library.js) 来返回 csv 文件中的值。当我从我的程序中调用模块时,我得到了奇怪的结果。我的程序如下。
users.csv
id,name
1,Jim
2,Jo
库.js
var csv = require("fast-csv");
var DataToBeReturned = [];
exports.users = function () {
csv.fromPath("users.csv", {headers: true})
.on("data",function(data){
DataToBeReturned.push(data);
})
.on("end",function(){
console.log(DataToBeReturned.length);
return DataToBeReturned;
});
};
app.js
var mylibrary = require('./library.js');
console.log(mylibrary.users());
console.log(mylibrary.users());
我的预期输出是
2
[{ id: '1', name: 'Jim' },{ id: '2', name: 'Jo' }]
2
[{ id: '1', name: 'Jim' },{ id: '2', name: 'Jo' }]
相反,我得到了
undefined
undefined
3
4
我的疑惑:
- 为什么返回值未定义?
- 为什么我的计数不总是 2?
提前致谢。
【问题讨论】:
-
@BenFortune,这很好,Felix 对这个问题的回答涉及到关于异步编程的更多细节。
标签: javascript node.js csv module