Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript “你能成为客户吗?”;等待“;对于来自服务器的流?_Javascript_Node.js - Fatal编程技术网

Javascript “你能成为客户吗?”;等待“;对于来自服务器的流?

Javascript “你能成为客户吗?”;等待“;对于来自服务器的流?,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()请求 我现在的问题:

我有一个基本的node.js服务器,它的唯一用途是提供单个.txt文件,例如模拟API。目前我正在使用streams将文件“管道”到客户端,因为文件很大,我想一块一块地为它服务,因为文件可能有1GB大,并且会破坏我的RAM

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();
  });
});
指定块的大小,然后将其发送到多个响应中,直到文件被读取为止

我希望有帮助