gpt4 book ai didi

javascript - Node.js Stream Transform 是否维护 block 的顺序?

转载 作者:搜寻专家 更新时间:2023-11-01 00:38:43 26 4
gpt4 key购买 nike

我看到 Node.js Stream API 中的 Transform Streams 使用异步函数在数据 block 到达时对其进行转换: https://nodejs.org/api/stream.html#stream_transform_transform_chunk_encoding_callback

Transform 流是否以与到达时相同的顺序发送 block ?因为对于异步函数,情况并非如此。

最佳答案

简短的回答是:是的,转换流保证 block 以相同的顺序发送。 (因为 Streams 可能用于顺序敏感操作(用于加密或压缩-解压缩文件)

这是一个片段,您可以运行以确保:

const {Transform} = require('stream');
const _ = require('lodash');
const h = require('highland');

const myTransform = new Transform({
transform(chunk, encoding, callback) {
//Callback fires in a random amount of time 1-500 ms
setTimeout(() => callback(null, chunk), _.random(1, 500));
},
//Using objectMode to pass-trough Numbers, not strings/buffers
objectMode: true
});

//I'm using 'highland' here to create a read stream
//The read stream emits numbers from 1 to 100
h(_.range(1, 100))
.pipe(myTransform)
//Simply logging them as they go out of transform stream
.on('data', chunk => console.log(chunk.toString()));

//The output is:
// 1
// 2
// 3
// 4 ...
//Although the callbacks fire in random order

关于javascript - Node.js Stream Transform 是否维护 block 的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42341097/

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