【问题标题】:How to check if a value/argument/resource is a writable stream in node如何检查值/参数/资源是否是节点中的可写流
【发布时间】:2021-02-10 03:17:32
【问题描述】:

我想知道如何检查 node.js 中的值/参数/资源是否是可写流。

有没有什么功能或方法可以做到这一点?

谢谢

【问题讨论】:

  • 我真的很想看到这个问题得到解决:D
  • 为什么需要这样做?
  • 你试过什么?
  • 还有什么是你的可写流的定义,为什么你不能简单地检查它的定义是否匹配。
  • 检查yourStream instanceof stream.Writable怎么样?显然 stream = require('stream') 在 node.js v0.9.4+

标签: javascript node.js


【解决方案1】:

你可以检查

// include node stream module
const stream = require('stream');

// check if stream is an instance of a Writable Stream
let isWritableStream = yourStream instanceof stream.Writable

注意:在您的程序中,您自定义的“可写流类”应该扩展stream.Writable 类。为了扩展它,您可以查看How to implement a writable stream (Stack Overflow)

参考资料:

  1. stream.Writable (Node.js v.0.9.4+)
  2. instanceof (MDN)

【讨论】:

  • btw.. 在今天之前我什至不知道流是 LITERAL 类的东西
  • 您对 JS 中的“类”本质上是什么有误解。 JS 不是面向对象,而是面向原型的编程语言。任何类实际上都是具有特定原型的“特殊”Function 对象。检查instanceof 只是检查原型是否一致。 Node.js 只是暴露了底层的 V8(引擎)Function 对象,它是所有内部流实现的原型。它不是 LITERAL 一个类,而是一个函数,实际上你可以在没有new 关键字的情况下调用它:stream.Writable(),没有错误。
  • 我从来没有说过我不知道(关于原型).. 只是它并没有真正连接英国.. 只是.. 需要花点时间
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多