Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何制作';同步';nodejs转换流?_Javascript_Node.js_Node Streams - Fatal编程技术网

Javascript 如何制作';同步';nodejs转换流?

Javascript 如何制作';同步';nodejs转换流?,javascript,node.js,node-streams,Javascript,Node.js,Node Streams,目前,我正在使用一个名为“ChunkingStream”的转换流来接收和处理来自TCP套接字(以及到其他位置的管道)的数据。一般结构与nodejs文档中给出的示例结构基本相同: ChunkingStream.prototype._transform = function (chunk, encoding, callback) { // extract data from chunk this.push(data); callback(); }; 但是,由于数据块的顺序在

目前,我正在使用一个名为“ChunkingStream”的转换流来接收和处理来自TCP套接字(以及到其他位置的管道)的数据。一般结构与nodejs文档中给出的示例结构基本相同:

ChunkingStream.prototype._transform = function (chunk, encoding, callback) {
    // extract data from chunk
    this.push(data);
    callback();
};
但是,由于数据块的顺序在这个问题中很重要,而且看起来像调用:

this.push(data);
是异步的


因此,是否有任何方法使上述调用同步??干杯

为了防止混淆,我所说的异步是指等待数据被实际推送到流中。TransformStream将不会开始处理下一个数据块,直到您调用callback()。所以订单是有保证的。也请查看这个片段。我不在那里调用this.push(data)(数据通过回调(null,data)传递)。但是想法是一样的。
this.push(data);
已经是同步的。谢谢!@AntonioNarkevich和@jfriend00!这确实有帮助!顺便问一下,有没有什么方法可以用来监视转换流中流缓冲区的长度?`XXX.\u transform=函数(分块、编码、回调){//some method返回流缓冲区的大小,即等待执行的“chunk”//数量!}`“看起来调用
this.push(data)
是异步的。”-怎么会这样?为什么这甚至会影响顺序处理的顺序?