【发布时间】:2020-01-18 07:08:18
【问题描述】:
我想在处理下一行之前暂停我的 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();
})
}
【问题讨论】:
标签: node.js cassandra stream cassandra-driver express-cassandra