首页 > 解决方案 > NodeJS在函数中调用readline

问题描述

我正在学习 NodeJS,但遇到了一个基本问题。我正在尝试逐行读取文件,并且对于我读取的每一行都将 HTTP 请求发送到/ + <the line>例如:

wlist.txt 内容

line 
line2

尝试失败

const request = require('request') // for http request later
const readline = require('readline')
const fs = require('fs')
function fileLoader() {
  const readInterface = readline.createInterface({
    input: fs.createReadStream('C:\\etc\\code\\req\\wlist.txt'),
  });
  readInterface.on('line', function(line) {
    return "test";
  });
}

var aba = fileLoader();
console.log(aba); // undefined

我将 fileLoader 作为函数而不是“原样”插入的逻辑是,我稍后有一个 switch case,它将文件加载用于不同的目的,例如 XML 请求或 JSON 请求。让我们说:

switch (myArgs[0]) {
  case 'json':
  let myJSON = {username: 'val'};
  request({
  url: "http://192.168.1.2:3000",
  method: "POST",
  json: true,
  body: myJSON
  }, function (error, response, body){
    console.log(response.headers)
    console.log(response.body)
  });
    break;

  case 'xml': .....

我完全知道我遗漏了一些东西,可能是关于异步/承诺或任何东西,但是为了真正教育,有人可以对我放轻松,给我指路吗?我已经尝试了一切,只是无法掌握问题所在..

标签: node.js

解决方案


我相信你想做这样的事情: https ://gist.github.com/EB-BartVanVliet/533d55eb17c97f2a12ed25f479786f4a

基本上我所做的是:

  • 解析文件,查找空行并删除那些
  • 我声明了一个异步启动函数,以便我可以在 for 循环中使用 await
  • 记录输出

推荐阅读