Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.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/39.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 如何识别node.js中发出事件的流_Javascript_Node.js_Stream - Fatal编程技术网

Javascript 如何识别node.js中发出事件的流

Javascript 如何识别node.js中发出事件的流,javascript,node.js,stream,Javascript,Node.js,Stream,我有来自Db的流,我正在通过HTTP请求将它发送到许多HTTP服务器。 要分割此流,我使用passThrough 一切都很好,但是当事件被调用时,我不知道哪个流发出它。 是否有任何解决方案来识别该流?。 我正在使用错误、结束、数据和响应事件。 作为回应,我有关于主机的信息,但最重要的是在ErrorEventListener中识别它 const stream = await getDataStream(id); const passThrough = new PassThrough(); stre

我有来自Db的流,我正在通过HTTP请求将它发送到许多HTTP服务器。 要分割此流,我使用passThrough 一切都很好,但是当事件被调用时,我不知道哪个流发出它。 是否有任何解决方案来识别该流?。 我正在使用错误、结束、数据和响应事件。 作为回应,我有关于主机的信息,但最重要的是在ErrorEventListener中识别它

const stream = await getDataStream(id);
const passThrough = new PassThrough();
stream.pipe(objectToString).pipe(passThrough);

for (let host of hostsList) {
  startedRequestsCount++;
  host.stream
    .on('error', errorHandler)
    .on('data', dataHandler)
    .on('response', responseHandler)
    .on('end', resolveAfterAllRequests);
  passThrough.pipe(host.stream);
}
我对这个解决方案有很多疑问,但现在,它正在发挥作用。 问题是当我收到错误并想知道哪个主机出现故障时

奖金问题:


如果我通过HTTP进行流传输,我可以处理背压问题吗?

定义处理程序时,使用currying获取额外的流参数:

  const errorHandler = stream => error => {
   console.log(stream, error);
 };
然后煮咖喱:

 host.stream
  .on('error', errorHandler(host.stream));

当然,您可以使用该模式传入多个参数。

元素是什么?@jonaswillms这是一个输入错误。这是主机,主机是一个包含流请求的对象。请注意,将一个流输送到多个流可能会导致背压问题。@Jonaswillms是的,我知道,因此我有一个额外的问题;。。。哎呀。不知怎么跳过了。谢谢,这就是我需要的。