获取未定义的node.js代码
我有下面的代码。 使用readline
和fs
模块,我试图逐行search文件中的特定单词,如果该单词存在,则将该单词的内容推送到一个数组,但是当我试图返回这个数组时,我得到一个未定义的。 有任何想法吗?
var fs = require('fs'); var readline = require('readline'); var reader = readline.createInterface({ input: fs.createReadStream('MY_FILE_NAME.txt'), }); function newDefineWord(reader1) { this.reader = reader1; } newDefineWord.prototype.define = function(searchTerm) { var arr = []; this.reader.on('line', function (line) { if (line.search(searchTerm)!== -1) { arr.push(line); console.log(arr); } }); return arr; } var word = new newDefineWord(reader); console.log(word.define('libro'));
reader.on是asynchronous的,你应该在代码结束之前返回它
newDefineWord.prototype.define = function(searchTerm, cb) { var arr = []; this.reader.on('line', function (line) { if (line.search(searchTerm)!== -1) { arr.push(line); console.log(arr); } }); this.reader.on('close',function(){ cb(arr) }) } var word = new newDefineWord(reader); word.define('libro', function(arr){ console.log(arr); })
另外如果你不想使用callback,你可以使用promise或generator
- Node.js + ExpressJS + Socket.IO TypeError:obj.on不是一个函数
- Expressjs / node.js相当于在PHP中的退出()
- 使用Sendgrid / Nodemailer将Angular表单数据发布到Node.js
- NodeJS – Socket.io只允许JWTvalidation的连接
- Socket.io broadcast.to不工作,但broadcast.emit不会
- Angular2 – 在客户端需要模块
- 使用backbone.js来组织子视图?
- TypeError:无法读取未定义的属性“sid”
- 使用属性上的删除时,Javascript对象内存pipe理