【发布时间】:2017-04-14 23:25:02
【问题描述】:
我使用request package 和crypto。似乎request 实现了旧的stream 协议和don't write 任何数据到管道目标,直到它是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。
我不明白这样做的原因是什么?文档中在哪里说明了这一点?
【问题讨论】:
标签: node.js node-request node-crypto node-streams