Javascript 带有异步API调用的节点readline,如何知道何时关闭()
当我进入endpoint并运行它时,我会比其他任何事情都先完成。显然,我没有正确地使用async/Wait原则,我很高兴收到您在这方面的经验 我尝试过不同的方法,我发现接近我所寻找的方法如下: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('/'
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);
}
})();