writable._construct(callback)


  • callback <Function> 当流完成初始化时调用此函数(可选地带有错误参数)。

    ¥callback <Function> Call this function (optionally with an error argument) when the stream has finished initializing.

不得直接调用 _construct() 方法。它可能由子类实现,如果是这样,将仅由内部 Writable 类方法调用。

¥The _construct() method MUST NOT be called directly. It may be implemented by child classes, and if so, will be called by the internal Writable class methods only.

这个可选函数将在流构造函数返回后立即调用,延迟任何 _write()_final()_destroy() 调用,直到调用 callback。这对于在使用流之前初始化状态或异步初始化资源很有用。

¥This optional function will be called in a tick after the stream constructor has returned, delaying any _write(), _final() and _destroy() calls until callback is called. This is useful to initialize state or asynchronously initialize resources before the stream can be used.

const { Writable } = require('node:stream');
const fs = require('node:fs');

class WriteStream extends Writable {
  constructor(filename) {
    super();
    this.filename = filename;
    this.fd = null;
  }
  _construct(callback) {
    fs.open(this.filename, (err, fd) => {
      if (err) {
        callback(err);
      } else {
        this.fd = fd;
        callback();
      }
    });
  }
  _write(chunk, encoding, callback) {
    fs.write(this.fd, chunk, callback);
  }
  _destroy(err, callback) {
    if (this.fd) {
      fs.close(this.fd, (er) => callback(er || err));
    } else {
      callback(err);
    }
  }
}