static iterateOverCursorRequest()

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;
    }