【发布时间】:2018-06-27 14:32:37
【问题描述】:
我正在尝试非常快速地从文件中读取数据(来自 ADC 的数据)。转换在打开文件时开始,并在关闭时完成。我需要等待再次打开文件,等待当前转换完成。
我的问题是,当我很快打开文件时,nodejs 不会捕捉到预期的事件。任何线索如何解决这个问题?
node.on('input', function(){
readStream = fs.createReadStream(path.location,{encoding: 'utf8'});
if (readyFlag == 1) {
readStream.on('data',(data) => {
data = {payload: data/1000};
node.send(data);
console.log(`data: ${data}`);
})
}
readStream.on('open', () => {
console.log("file opened");
readyFlag = 0;
})
readStream.on('close', () => {
console.log("file closed");
readyFlag = 1;
})
readStream.on('error', (err) => {
console.log(err);
})
})
我最终发现文件一直在打开。
【问题讨论】:
-
你到底想在这里做什么?您是否试图保护文件上的多次读取?有点令人困惑,至于为什么文件保持打开状态,可能是因为您正在传递选项而不是设置
autoClose: true- 根据 the docs 它应该默认为,但只有当您根本没有传递任何选项时才会发生这种情况. -
我可以看到它有点混乱。对不起!事实上,是的,我试图防止多次读取。我想确保文件已关闭,然后才能进行另一次读取操作。当我在 1 秒内打开和关闭文件时,我的代码有效。但如果我强制它每 0.1 秒读取一次,它只会收到“打开”事件,而不会收到“关闭”事件。
标签: javascript node.js readfile node-red