當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Node.js readable._construct(callback)用法及代碼示例


readable._construct(callback)

添加於:v15.0.0

參數
  • callback <Function> 當流完成初始化時調用此函數(可選地使用錯誤參數)。

不得直接調用 _construct() 方法。它可能由子類實現,如果是這樣,將僅由內部Readable 類方法調用。

此可選函數將由流構造函數在下一個滴答中安排,延遲任何 _read()_destroy() 調用,直到調用 callback。這對於在可以使用流之前初始化狀態或異步初始化資源很有用。

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);
    }
  }
}

相關用法


注:本文由純淨天空篩選整理自nodejs.org大神的英文原創作品 readable._construct(callback)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。