驱动 API

优质
小牛编辑
131浏览
2023-12-01

1.1版开始,就可以为 localForage 自定义驱动了。

defineDriver

// 此处为驱动的实现
var myCustomDriver = {
    _driver: 'customDriverUniqueName',
    _initStorage: function(options) {
        // 在此处自定义实现...
    },
    clear: function(callback) {
        // 在此处自定义实现...
    },
    getItem: function(key, callback) {
        // 在此处自定义实现...
    },
    key: function(n, callback) {
        // 在此处自定义实现...
    },
    keys: function(callback) {
        // 在此处自定义实现...
    },
    length: function(callback) {
        // 在此处自定义实现...
    },
    removeItem: function(key, callback) {
        // 在此处自定义实现...
    },
    setItem: function(key, value, callback) {
        // 在此处自定义实现...
    }
}

// 为 localForage 添加驱动。
localforage.defineDriver(myCustomDriver);

你需要确保接受一个 callback 参数,并且将同样的几个参数传递给回调函数,类似默认驱动那样。同时你还需要 resolve 或 reject Promise。通过 默认驱动 可了解如何实现自定义的驱动。

自定义实现可包含一个 _support 属性,该属性为布尔值(true / false) ,或者返回一个 Promise,该 Promise 的结果为布尔值。如果省略 _support,则默认值是 true 。你用它来标识当前的浏览器支持你自定义的驱动。

driver

localforage.driver();
// "asyncStorage"

driver()

返回正在使用的驱动的名称,在异步的驱动初始化过程中(详情参阅 ready)为 null,若初始化未能找到可用的驱动也为 null

ready

localforage.ready().then(function() {
    // 当 localforage 将指定驱动初始化完成时,此处代码运行
    console.log(localforage.driver()); // LocalStorage
}).catch(function (e) {
    console.log(e); // `No available storage method found.`
    // 当没有可用的驱动时,`ready()` 将会失败
});

ready() 提供了一种方法来确定异步驱动程序初始化过程是否已完成,localForage 会对所有数据 API 方法的调用进行缓冲排序。当我们需要知道 localForage 当前正在使用的是哪一个驱动时,此方法会非常有用。

supports

localforage.supports(localforage.INDEXEDDB);
// true

supports(driverName)

返回一个布尔值,表示浏览器是否支持 driverName

默认驱动名称可参阅 setDriver