javascript – 使用IndexedDB游标进行分页

前端之家收集整理的这篇文章主要介绍了javascript – 使用IndexedDB游标进行分页前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个IndexedDB数据存储,其中包含几百个对象.我想根据该商店的一个索引中的订单从中获取40-59项.有没有办法在开始使用数据之前简单地调用cursor.continue()39次?就处理时间而言,这似乎相当浪费.

解决方法

我有同样的问题,cursor.advance(40)是你想要使用的.

我需要花费一些时间来弄明白这一点可能对其他人有用的是,如果你想要推进光标并遍历结果,你需要在单独的openCursor().onsuccess处理程序中调用它们,或实现某种类型的跟踪以防止它们在同一请求中被调用或被抛出的InvalidStateError异常.这可以这样做:

单独的处理程序

// advance first
store.openCursor().onsuccess = function(event) {
    var cursor = event.target.result;
    cursor.advance(40);
};

// then iterate
objectStore.openCursor().onsuccess = function(event) {
    var cursor = event.target.result;
    cursor.continue();
});

相同的处理程序

// create flag for advancing
var advancing = true;

store.openCursor().onsuccess = function(event) {

    var cursor = event.target.result;

    // advancing
    if (advancing === true) {

        cursor.advance(40);

        // set advancing flag to false so we don't advance again
        advancing = false;

    }
    // continuing
    else {

        cursor.continue();

    }

}

规格参考:http://www.w3.org/TR/IndexedDB/#widl-IDBCursor-advance-void-unsigned-long-count
MDN参考示例:https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.advance

猜你在找的JavaScript相关文章