У меня есть приложение, которое является 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 не является функцией