获取未定义的node.js代码

我有下面的代码。 使用readlinefs模块,我试图逐行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