获取未定义的节点.js代码

Getting undefined node.js code

本文关键字:js 代码 节点 未定义 获取      更新时间:2023-09-26

>我在下面有这段代码。使用 readlinefs 模块,我尝试逐行搜索文件中的特定单词,如果该单词存在,则将该单词的内容推送到数组,但是当我尝试返回此数组时,我得到一个未定义。有什么想法吗?

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 是异步的,你在代码应该得出结论之前返回它

    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);
    })

此外,如果您不想使用回调,您可以使用 promise 或生成器