Created
December 11, 2019 16:55
-
-
Save danielecr/f6dc09d7e5ad083540f618927c969fc4 to your computer and use it in GitHub Desktop.
Some code to show events in stream
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
example text data to copy from | |
execute | |
> node stream-to-target.spec.js | |
to read: | |
""" | |
read stream end | |
write stream finish ./tgt_data.txt | |
read stream close | |
write stream close ./tgt_data.txt | |
success ./tgt_data.txt | |
data | |
""" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const fs = require('fs') | |
const streamToTarget = (stream, targetFile) => new Promise((resolve,reject) => { | |
stream.on('end', ()=> { | |
console.log('read stream end'); | |
//resolve(targetFile); | |
}); | |
stream.on('close', ()=> { | |
console.log('read stream close'); | |
//resolve(targetFile); | |
}); | |
stream.on('error',(err) => { | |
console.log('read stream error',err) | |
reject(`error on read stream ${err.toString()}`); | |
}) | |
let ws_target = fs.createWriteStream(targetFile) | |
ws_target.on('error', (err) => { | |
console.log('write stream err',err) | |
reject(`error on stream target stream ${targetFile} ${err.toString()}`); | |
}) | |
ws_target.on('finish', ()=> { | |
console.log(`write stream finish ${targetFile}`); | |
//resolve(targetFile); | |
}); | |
ws_target.on('close', ()=> { | |
console.log(`write stream close ${targetFile}`); | |
resolve(targetFile); | |
}); | |
stream.pipe(ws_target); | |
}) | |
module.exports = streamToTarget; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const fs = require('fs') | |
const streamToTarget = require('./stream-to-target'); | |
const source = './src_data.txt'; | |
const target = './tgt_data.txt' | |
let stream = fs.createReadStream(source); | |
setTimeout(()=>console.log('data'), 2000); | |
return streamToTarget(stream,target) | |
.then(msg=>console.log(`success ${msg}`)) | |
.catch(err=>console.error(`error: ${err}`)); |
setTimeout(()=>console.log('data'), 2000);
Why this line?
just to cheer "data". No, just to print something at the end, I am assuming here that 2 second is enough to make the work.
The only point here were to show that when using .pipe() read stream end, then write stream finish, then read stream close, then write stream close. And this sequence make sense
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Why this line?