readable._construct(callback)


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

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

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

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

这个可选函数将被流构造函数安排在下一个时钟周期,延迟任何 _read()_destroy() 调用,直到调用 callback。这对于在使用流之前初始化状态或异步初始化资源很有用。

\This optional function will be scheduled in the next tick by the stream constructor, delaying any _read() and _destroy() calls until callback is called. This is useful to initialize state or asynchronously initialize resources before the stream can be used.

const { Readable } = require('node:stream');
const fs = require('node:fs');
class ReadStream extends Readable {
 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();
 }
 });
 }
 _read(n) {
 const buf = Buffer.alloc(n);
 fs.read(this.fd, buf, 0, n, null, (err, bytesRead) => {
 if (err) {
 this.destroy(err);
 } else {
 this.push(bytesRead > 0 ? buf.slice(0, bytesRead) : null);
 }
 });
 }
 _destroy(err, callback) {
 if (this.fd) {
 fs.close(this.fd, (er) => callback(er || err));
 } else {
 callback(err);
 }
 }
} 

AltStyle によって変換されたページ (->オリジナル) /