将服务器端数据行成块发送给客户端

时间:2019-02-27 17:32:10

标签: node.js reactjs express asynchronous large-data

我有一个应用程序,它是nodejs + express + reactjs。在Node.js端,我正在使用mysql存储过程获取大量数据行,并将响应异步发送给客户端。但这会导致浏览器由于体积大而延迟。为了解决这个问题,我想从节点发送数据块到客户端。一次可能是10K,然后继续发送进一步的数据,这些数据将添加到客户端的现有数据中。我应该在这里使用哪种技术?

我尝试使用流数据并将其发送到10000行集中。如下所示:

 return new Promise((resolve, reject)=>{
            var request = new sql.Request(dbConn);
            request.stream = true;
            request.query(<sp>);
            let rowsToProcess = [];
            request.on('row', row => {
                rowsToProcess.push(row);
                if (rowsToProcess.length === 10000) {
                    resolve(rowsToProcess)
                  request.pause();
                  processRows();
                }
              });
              request.on('done', () => {
                  processRows();
              });

              function processRows() {
                // process rows
                rowsToProcess = [];
                request.resume();
              }
        });

但是它仅发送前10000条记录。在服务器端之后,它给出错误为:

  

uncaughtException:request.pause不是函数TypeError:   request.pause不是函数

0 个答案:

没有答案