You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.2 KiB
47 lines
1.2 KiB
# minipass-flush |
|
|
|
A Minipass stream that calls a flush function before emitting 'end' |
|
|
|
## USAGE |
|
|
|
```js |
|
const Flush = require('minipass-flush') |
|
cons f = new Flush({ |
|
flush (cb) { |
|
// call the cb when done, or return a promise |
|
// the 'end' event will wait for it, along with |
|
// close, finish, and prefinish. |
|
// call the cb with an error, or return a rejecting |
|
// promise to emit 'error' instead of doing the 'end' |
|
return rerouteAllEncryptions().then(() => clearAllChannels()) |
|
}, |
|
// all other minipass options accepted as well |
|
}) |
|
|
|
someDataSource.pipe(f).on('end', () => { |
|
// proper flushing has been accomplished |
|
}) |
|
|
|
// Or as a subclass implementing a 'flush' method: |
|
class MyFlush extends Flush { |
|
flush (cb) { |
|
// old fashioned callback style! |
|
rerouteAllEncryptions(er => { |
|
if (er) |
|
return cb(er) |
|
clearAllChannels(er => { |
|
if (er) |
|
cb(er) |
|
cb() |
|
}) |
|
}) |
|
} |
|
} |
|
``` |
|
|
|
That's about it. |
|
|
|
If your `flush` method doesn't have to do anything asynchronous, then it's |
|
better to call the callback right away in this tick, rather than returning |
|
`Promise.resolve()`, so that the `end` event can happen as soon as |
|
possible.
|
|
|