in src/IndexedDbProvider.ts [872:902]
static iterateOverCursorRequest(req: IDBRequest, func: (cursor: IDBCursor) => void, limit?: number, offset?: number)
: Promise<void> {
const deferred = defer<void>();
let count = 0;
req.onsuccess = (event) => {
const cursor: IDBCursor = (<IDBRequest>event.target).result;
if (cursor) {
if (offset) {
cursor.advance(offset);
offset = 0;
} else {
func(cursor);
count++;
if (limit && (count === limit)) {
deferred.resolve(void 0);
return;
}
cursor['continue']();
}
} else {
// Nothing else to iterate
deferred.resolve(void 0);
}
};
req.onerror = (ev) => {
deferred.reject(ev);
};
return deferred.promise;
}