Я хочу приостановить мой поток cassandra для некоторых асинхронных операций перед обработкой следующей строки.
Каждая строка принимается в читаемом прослушивателе событий. Я пробовал использовать stream.pause, но на самом деле он не приостанавливает поток. Я также пробовал то же самое в прослушивателе событий «данные», и это тоже не работает. Буду чрезвычайно признателен за идеи и, возможно, разрешение. Вот мой код. использование async в readable и «ожидание» с использованием await на самом деле не предотвращает появление следующей строки до завершения асинхронной функции.
function start() {
let stream = client.stream('SELECT * FROM table');
stream
.on('end', function () {
console.log(`Ended at ${Date.now()}`);
})
.on('error', function (err) {
console.error(err);
})
.on('readable', function () {
let row = this.read();
asyncFunctionNeedTowaitForthisBeforeNextRow()
})
}
// Следующее ниже не работает
function start() {
let stream = client.stream('SELECT * FROM table');
stream
.on('end', function () {
console.log(`Ended at ${Date.now()}`);
})
.on('error', function (err) {
console.error(err);
})
.on('readable', async function () {
let row = this.read();
stream.pause();
await asyncFunctionNeedTowaitForthisBeforeNextRow();
stream.resume();
})
}