我是 Node 的新手。 在这样的设置中
server.on('request', function(request, response) {
// the same kind of magic happens here!
});
我假设 response
是 http.ServerResponse
的一个实例。
但是我读过的一篇教程说:http.ServerResponse
是 WritableStream
。
现在可写流和http.ServerResponse
都有写方法; here和 here .
我的问题是,当我调用 response.write
时,会调用哪个版本的 write
?一个来自 http.ServerResponse
还是一个来自可写流?
最佳答案
http.ServerResponse
实现了 stream.Writable
接口(interface)的一个版本,但不继承其实际实现。因此,当您调用 response.write()
时,您调用的是 http.ServerResponse.write()
而不是 stream.Writable.write()
.
Class: http.ServerResponse
The response implements, but does not inherit from, the Writable Stream interface.
在内部,http.ServerResponse
实际上是一个OutgoingMessage
,它是一个Stream。 ,那供应write()
.如果将其与 stream.Writable.write()
进行比较实现,他们写入数据的方式是不同的。
I was also curious what benefits it gets in implementing writable stream if it uses its own write for example, etc? (From Comments below)
如果不是 Node.js 基金会的一员,我无法谈论动机,但从设计的 Angular 来看,实现 stream.Writable
接口(interface)提供了一组熟悉且通用的方法和事件供开发人员使用。此外,http.ServerResponse
正在写入连接套接字(请参阅 OutgoingMessage._send()
),这不是 stream.Writable.write()
实现的一部分。
也许下面的摘录提供了对基金会思维过程的一些洞察
Writable Streams
All Writable streams implement the interface defined by the stream.Writable class.
While specific instances of Writable streams may differ in various ways, all Writable streams follow the same fundamental usage pattern
关于javascript - response.write - 它是从可写流还是从 http.ServerResponse 调用写入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41988261/