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);
}
}
}
相关用法
- Node.js readable.push(chunk[, encoding])用法及代码示例
- Node.js stream.Readable readable[Symbol.asyncIterator]()用法及代码示例
- Node.js readStream.isRaw用法及代码示例
- Node.js readlinePromises.createInterface(options)用法及代码示例
- Node.js readStream.setRawMode()用法及代码示例
- Node.js readline.createInterface(options)用法及代码示例
- Node.js readline.emitKeypressEvents(stream[, interface])用法及代码示例
- Node.js readStream.isTTY用法及代码示例
- Node.js http2.Http2ServerRequest request.url用法及代码示例
- Node.js request.socket用法及代码示例
- Node.js http.ServerResponse response.statusCode用法及代码示例
- Node.js http.ClientRequest request.getHeaders()用法及代码示例
- Node.js http2.Http2ServerRequest request.headers用法及代码示例
- Node.js http.ClientRequest request.setHeader(name, value)用法及代码示例
- Node.js response.writeContinue()用法及代码示例
- Node.js http2.Http2ServerResponse response.removeHeader(name)用法及代码示例
- Node.js response.removeHeader()用法及代码示例
- Node.js http.ServerResponse response.getHeaderNames()用法及代码示例
- Node.js request.writableEnded用法及代码示例
- Node.js http.ClientRequest request.getHeaderNames()用法及代码示例
- Node.js http2.Http2ServerResponse response.hasHeader(name)用法及代码示例
- Node.js http.ClientRequest request.removeHeader(name)用法及代码示例
- Node.js http.ClientRequest request.getHeader(name)用法及代码示例
- Node.js http.ServerResponse response.removeHeader(name)用法及代码示例
- Node.js http.ClientRequest request.reusedSocket用法及代码示例
注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品 readable._construct(callback)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。