Skip to content

Commit a74a881

Browse files
committed
fix #318 - faster streaming queries
1 parent 9329dd2 commit a74a881

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

src/table.js

+11-11
Original file line numberDiff line numberDiff line change
@@ -205,24 +205,24 @@ async function evaluateQuery(source, args, invalidation) {
205205

206206
// Generator function that yields accumulated query results client.queryStream
207207
async function* accumulateQuery(queryRequest) {
208+
let then = performance.now();
208209
const queryResponse = await queryRequest;
209210
const values = [];
210211
values.done = false;
211212
values.error = null;
212213
values.schema = queryResponse.schema;
213214
try {
214-
const iterator = queryResponse.readRows();
215-
do {
216-
const result = await iterator.next();
217-
if (result.done) {
218-
values.done = true;
219-
} else {
220-
for (const value of result.value) {
221-
values.push(value);
222-
}
215+
for await (const rows of queryResponse.readRows()) {
216+
if (performance.now() - then > 10 && values.length > 0) {
217+
yield values;
218+
then = performance.now();
219+
}
220+
for (const value of rows) {
221+
values.push(value);
223222
}
224-
yield values;
225-
} while (!values.done);
223+
}
224+
values.done = true;
225+
yield values;
226226
} catch (error) {
227227
values.error = error;
228228
yield values;

0 commit comments

Comments
 (0)