@megalo/api
Version:
重新封装各个端中的API,由 megalo 统一对外抛出方法名。目前微信小程序端提供的 API 最为丰富,所以 API 名称以微信小程序为准。
114 lines (102 loc) • 2.59 kB
JavaScript
const resolvePromise = () => Promise.resolve();
/**
* 将数据存储在本地缓存中指定的 key 中,同步接口,自行try catch
* @param {String} key
* @param {Object | String} data
* @throws {Error} https://developer.mozilla.org/en-US/docs/Web/API/Storage/setItem#Exceptions
*/
function setStorageSync(key, data) {
try {
window.localStorage.setItem(key, JSON.stringify(data));
} catch(e) {
console.info(e);
}
}
/**
* 数据存储在本地缓存中指定的 key 中,异步接口
* @param {Object} { key: String, data: Object | String }
* @returns {Promise}
*/
function setStorage({ key, data }) {
return resolvePromise().then(() => setStorageSync(key, data));
}
/**
* 从本地缓存中同步获取指定 key 对应的内容
* @param {String} key
*/
function getStorageSync(key) {
const dataString = window.localStorage.getItem(key);
// 返回 null 或者 data
try {
return dataString && JSON.parse(dataString);
} catch(e) {
console.info(e);
}
}
/**
* 从本地缓存中异步获取指定 key 对应的内容
* @param {Object} { key: String }
* @returns {Promise}
*/
function getStorage({ key }) {
return resolvePromise().then(() => getStorageSync(key));
}
/**
* 本地缓存中同步移除指定 key
* @param {String} key
*/
function removeStorageSync(key) {
return window.localStorage.removeItem(key);
}
/**
* 从本地缓存中异步移除指定 key
* @param {Object} { key: String }
* @returns {Promise}
*/
function removeStorage({ key }) {
return resolvePromise().then(() => removeStorageSync(key));
}
/**
* 同步清理本地数据缓存
*/
function clearStorageSync() {
return window.localStorage.clear();
}
/**
* 异步清理本地数据缓存
*/
function clearStorage() {
return resolvePromise().then(() => clearStorageSync());
}
/**
* 同步获取当前 storage 的相关信息
*/
function getStorageInfoSync() {
return {
keys: Object.keys(window.localStorage),
currentSize: null,
limitSize: null,
};
}
/**
* 异步获取当前 storage 的相关信息
*/
function getStorageInfo() {
return resolvePromise().then(() => getStorageInfoSync());
}
export default {
install(Megalo) {
Object.assign(Megalo, {
setStorageSync,
setStorage,
getStorageSync,
getStorage,
removeStorageSync,
removeStorage,
clearStorageSync,
clearStorage,
getStorageInfoSync,
getStorageInfo,
});
}
};