实现自定义可写流类的完成事件处理程序

时间:2016-04-04 14:32:27

标签: node.js writable

假设customWS是可写流..

  util.inherits(customWS, stream.Writable);

我们实现了逻辑来处理_write()中的写入,如下所示。

  customWS.prototype._write = function(chunk, encoding, done) {
    // ...
  }

现在要使用customWS类,我们会做类似下面的事情。

  aReadableStream.pipe(new customWS()).on('finish', callback);

那么callback函数的参数是什么?

我可以传递callback之类的..

  function(data) {
    // ...    
  }

..还是修好了?

如果它没有修复,那么如何在customWS类中实现这样的回调?

有什么像......

  // in the implementation of customWS class
  customWS.prototype._finish = function(user_specified_callback) {
    user_specified_callback(some_data_say_a_bool_val);
  }

  // in the code, where i use the customWS class
  aReadableStream.pipe(new customWS()).on('finish', function(flag) {
    if (flag) {
      console.log('yes');
    }
  });

1 个答案:

答案 0 :(得分:0)

您通常不需要做任何事情来支持finish()finish事件及其签名记录在案here。它没有任何参数,它只是一个通知,表明可写流已经“关闭”并且无法再写入。

如果作为流实现者,您需要在可写流的“关闭”之前专门执行某些操作,那么在撰写本文时,您或多或少都会失去运气。有一个PR可以将此功能添加到可写流中。如果您正在实现转换流,那么您将拥有_flush()这是您想要的,但这仅在您实现双工流(不仅仅是可写)时才有用。