我使用request
带有crypto
. 似乎request
实现了旧stream
协议,并且在writable
.
Stream.prototype.pipe = function(dest, options) {
var source = this;
function ondata(chunk) {
if (dest.writable) {
if (false === dest.write(chunk) && source.pause) {
source.pause();
}
}
}
...
所以,如果我使用下一个代码:
const crypto = require('crypto');
const request = require('request');
var hasher = crypto.createHash('sha256');
// Uncomment the line below to fix!
// hasher.setEncoding('hex');
console.log(hasher.writable);
request('http://ya.ru').pipe(hasher).on('finish', function() {
console.log('Hash is', hasher.read());
});
它产生sha256('')
(即从空值)。但是当我使用hasher.setEncoding('hex')
代码时会产生sha256(<response_body>)
并hasher.writable
给出true
.
我不明白这样做的原因是什么?文档中在哪里说明了这一点?