Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带有异步API调用的节点readline,如何知道何时关闭()_Javascript_Readline - Fatal编程技术网

Javascript 带有异步API调用的节点readline,如何知道何时关闭()

Javascript 带有异步API调用的节点readline,如何知道何时关闭(),javascript,readline,Javascript,Readline,当我进入endpoint并运行它时,我会比其他任何事情都先完成。显然,我没有正确地使用async/Wait原则,我很高兴收到您在这方面的经验 我尝试过不同的方法,我发现接近我所寻找的方法如下: const express = require('express'); const fs = require('fs'); const readLine = require('readline') const app = express(); const port = 3000; app.get('/'

当我进入endpoint并运行它时,我会比其他任何事情都先完成。显然,我没有正确地使用async/Wait原则,我很高兴收到您在这方面的经验

我尝试过不同的方法,我发现接近我所寻找的方法如下:

const express = require('express');
const fs = require('fs');
const readLine = require('readline')
const app = express();
const port = 3000;

app.get('/', (req, res, next) => {

  let aylinResponseArray = [];
  let sendLine = readLine.createInterface({
    input: fs.createReadStream('my-file.txt'),
  });

sendLine.on('line', (line) => {
//multiple async API calls made here, I push response on my API's done callback.
}).on('close', function() {
console.log('finished');
  });
  res.end();
});
然而,我从node接收到一个传输错误,指出
once不是一个函数


我只是试用了上面的代码,如果您对我上面的代码有更简单的解决方案,请让我知道

第一个readline代码非常好,并且您正确地使用了readline。我的猜测是,您没有等待“多个异步API调用…”的结果——这是您没有显示的代码,因此我们不知道您的代码出了什么问题。我再重复一遍-您的readline代码没有问题第一个readline代码非常好,您使用的readline是正确的。我的猜测是,您没有等待“多个异步API调用…”的结果——这是您没有显示的代码,因此我们不知道您的代码出了什么问题。我再重复一遍-您的readline代码没有问题
const { once } = require('events');
const { createReadStream } = require('fs');
const { createInterface } = require('readline');

(async function processLineByLine() {
  try {
    const rl = createInterface({
      input: createReadStream('big-file.txt'),
      crlfDelay: Infinity
    });

    rl.on('line', (line) => {
      // Process the line.
    });

    await once(rl, 'close');

    console.log('File processed.');
  } catch (err) {
    console.error(err);
  }
})();