Отправлять строки данных на стороне сервера клиенту - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть приложение, которое является nodejs + express + реагировать.На стороне Nodejs я извлекаю большой объем строк данных с помощью хранимой процедуры 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 не является функцией

...