从异步迭代器管道到可写流
当从异步迭代器写入可写流时,确保正确处理背压和错误。
stream.pipeline()
抽象了背压和背压相关错误的处理:
const { pipeline } = require('stream');
const util = require('util');
const fs = require('fs');
const writable = fs.createWriteStream('./file');
// 回调模式
pipeline(iterator, writable, (err, value) => {
if (err) {
console.error(err);
} else {
console.log(value, 'value returned');
}
});
// Promise 模式
const pipelinePromise = util.promisify(pipeline);
pipelinePromise(iterator, writable)
.then((value) => {
console.log(value, 'value returned');
})
.catch(console.error);
When writing to a writable stream from an async iterator, ensure correct
handling of backpressure and errors. stream.pipeline()
abstracts away
the handling of backpressure and backpressure-related errors:
const { pipeline } = require('stream');
const util = require('util');
const fs = require('fs');
const writable = fs.createWriteStream('./file');
// Callback Pattern
pipeline(iterator, writable, (err, value) => {
if (err) {
console.error(err);
} else {
console.log(value, 'value returned');
}
});
// Promise Pattern
const pipelinePromise = util.promisify(pipeline);
pipelinePromise(iterator, writable)
.then((value) => {
console.log(value, 'value returned');
})
.catch(console.error);