【发布时间】:2018-11-05 21:10:57
【问题描述】:
我正在使用 Cassandra DB 驱动程序中的 client.stream() 来使用页面获取大型结果集,然后对于返回的每一行结果,我将其推送到在我的范围顶部定义的数组中。
查询完成后,我想返回我的数组,但它总是返回“未定义”,我猜是因为获取查询需要很长时间,所以 Javascript 在对象被填充之前继续返回语句。
对于不熟悉这个驱动的人来说:client.stream 是一个函数,它需要一点时间来获取一些数据。在返回对象之前我需要等待这个完成!
例如
function foo() {
var resultArray: [];
var query = "select username from users where userRank = 3";
client.stream(query, {prepare: true})
.on('readable' function () {
var row;
while (row = this.read()) {
resultArray.push(row.username);
}
})
.on('end', function () {
return obj; // The object only exists in this scope but cant return from here
});
}
当我调用这个var returned = foo(); 时,我得到undefined 作为返回值。
【问题讨论】:
标签: node.js asynchronous cassandra promise datastax-enterprise