【发布时间】:2019-10-10 11:55:29
【问题描述】:
使用 Electron 的 net 模块,目的是获取资源,并在收到响应后将其通过管道传输到可写流,如下所示:
const stream = await fetchResource('someUrl');
stream.pipe(fs.createWriteStream('./someFilepath'));
fetchResource的简化实现如下:
import { net } from 'electron';
async function fetchResource(url) {
return new Promise((resolve, reject) => {
const data = [];
const request = net.request(url);
request.on('response', response => {
response.on('data', chunk => {
data.push(chunk);
});
response.on('end', () => {
// Maybe do some other stuff with data...
});
// Return the response to then pipe...
resolve(response);
});
request.end();
});
}
响应最终是 IncomingMessage 的一个实例,它根据节点 docs 实现了一个 Readable Stream 接口,因此它应该能够通过管道传输到一个写入流。
主要问题是最终在流中没有数据通过管道传输????
【问题讨论】: