我正在使用节点标记将音频输入记录到文件中。一定时间后,我将停止记录,保存并在以后的某个时候再次记录。我拥有的代码可以正常工作...但是当我取消对编码器的管道传输时,却不断收到文件仍在写入文件的错误。我作弊,只是放了一个setTimeout来解决问题,但是我知道这不是正确的方法。我将如何接受此代码并使其正确无误,因此我无缘无故需要setTimeout?
recordingDecoder = chunker;
isRecording = true;
recordingDecoder.pipe(encoder);
var writeStream = fs.createWriteStream(__dirname+'/../recorded_calls/currentCall.wav');
writeStream.on('open', function() {
console.log('write stream open')
encoder.pipe(writeStream);
})
...
...
...
if(isRecording) {
recordingDecoder.unpipe(encoder);
setTimeout(function() {
encoder.end();
isRecording = false;
encoder = false;
}, 100)
setTimeout(function() {
recordingProccessor.process(function() {
fs.unlink('../recorded_calls/currentCall.wav', function(){
console.log('file deleted');
});
});
}, 1000)
}