gpt4 book ai didi

node.js - Node : Actual native substitute for "through2" for intervention to steams in 2021

转载 作者:行者123 更新时间:2023-12-05 03:45:11 24 4
gpt4 key购买 nike

来自through2文档:

Do you need this?

Since Node.js introduced Simplified Stream Construction, many uses ofthrough2 have become redundant. Consider whether you really need touse through2 or just want to use the 'readable-stream' package, or thecore 'stream' package (which is derived from 'readable-stream').

如果我理解正确,现在(从 2021 年开始)我们可以在没有第三方库的情况下干预流。我没有在 Stream documentation 中找到如何做与 through2 相同的事情| .

// ...
.pipe(through2(function (file, encoding, callback) {
// Do something with file ...
callback(null, file)
}))

// ↑ Possible to reach the same effect natively (with core packages)?

我想,到 2021 年,一定会有一些方法支持 async/await 语法:

// ...
.pipe(newFeatureOfModernNodeJS(async function (file) {

await doSomethingAsyncWithFile(file);
// on fail - same effect as "callback(new Error('...'))" of trough2

return file; // same effect as "callback(null, file)" of trough2

// or
return null; // same effect as `callback()` of trough2
}))

// ↑ Possible to reach the same effect natively (with core packages)?

最佳答案

您正在寻找的可能是转换流,它是由 Node.js 中包含的 native “流”库实现的。我不知道还有异步兼容版本,但肯定有基于回调的版本。您需要继承原生的 Transform 流并实现您的功能。

这是我喜欢使用的样板:

const Transform = require('stream').Transform;
const util = require('util');

function TransformStream(transformFunction) {
// Set the objectMode flag here if you're planning to iterate through a set of objects rather than bytes
Transform.call(this, { objectMode: true });
this.transformFunction = transformFunction;
}

util.inherits(TransformStream, Transform);

TransformStream.prototype._transform = function(obj, enc, done) {
return this.transformFunction(this, obj, done);
};

module.exports = TransformStream;

现在你可以在你想用的地方使用它:

const TransformStream = require('path/to/myTransformStream.js');
//...
.pipe(new TransformStream((function (file, encoding, callback) {
// Do something with file ...
callback(null, file)
}))

关于node.js - Node : Actual native substitute for "through2" for intervention to steams in 2021,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66007171/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com