Javascript “你能成为客户吗?”;等待“;对于来自服务器的流?
我有一个基本的node.js服务器,它的唯一用途是提供单个.txt文件,例如模拟API。目前我正在使用streams将文件“管道”到客户端,因为文件很大,我想一块一块地为它服务,因为文件可能有1GB大,并且会破坏我的RAMJavascript “你能成为客户吗?”;等待“;对于来自服务器的流?,javascript,node.js,Javascript,Node.js,我有一个基本的node.js服务器,它的唯一用途是提供单个.txt文件,例如模拟API。目前我正在使用streams将文件“管道”到客户端,因为文件很大,我想一块一块地为它服务,因为文件可能有1GB大,并且会破坏我的RAM server.on('request', (req, res) => { const src = fs.createReadStream('./test.txt'); src.pipe(res); }); 客户端只是执行一个fetch()请求 我现在的问题:
server.on('request', (req, res) => {
const src = fs.createReadStream('./test.txt');
src.pipe(res);
});
客户端只是执行一个fetch()请求
我现在的问题:
有没有一种方法可以在客户端“等待”类似于承诺的流?我看到将流包装成一个承诺,但我仍然需要等待流完成读取,并立即发送整个文件?您可能正在寻找:
let fs = require('fs'),
server.on('request', (req, res) => {
const src = fs.createReadStream('./test.txt');
const reader = fs.createReadStream('README.md', {
// Some aditional options
//flag: 'a+',
//encoding: 'ascii',
//start: 0,
//end: 64,
//highWaterMark: 16 // Chunk size
});
reader.on('data', chunk => {
console.log('chunk has been sent');
res.write(chunk);
});
reader.on('end', chunk => {
console.log('End');
res.end();
});
});
指定块的大小,然后将其发送到多个响应中,直到文件被读取为止
我希望有帮助