我想在处理下一行之前暂停我的 cassandra 流以进行一些异步操作。
每一行都在一个可读的事件侦听器中接收。我试过使用 stream.pause 但它实际上并没有暂停流。我也在“数据”事件侦听器中尝试过同样的方法,但这也不起作用。也许会非常感谢您的见解和解决方案。这是我的代码。在可读和“等待”中使用 async 使用 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();
})
}