| | |
| | | const setItem = (key, data) => { |
| | | return new Promise((resolve, reject) => { |
| | | if (!key) { |
| | | reject(new Error('存储键不能为空')); |
| | | return; |
| | | } |
| | | |
| | | wx.setStorage({ |
| | | key: key, |
| | | data: data, |
| | | success: resolve, |
| | | fail: reject |
| | | fail: (err) => { |
| | | console.error(`设置存储项 ${key} 失败:`, err); |
| | | reject(err); |
| | | } |
| | | }); |
| | | }); |
| | | }; |
| | | |
| | | const getItem = (key) => { |
| | | return new Promise((resolve, reject) => { |
| | | if (!key) { |
| | | reject(new Error('存储键不能为空')); |
| | | return; |
| | | } |
| | | |
| | | wx.getStorage({ |
| | | key: key, |
| | | success: (res) => resolve(res.data), |
| | | fail: reject |
| | | fail: (err) => { |
| | | console.error(`获取存储项 ${key} 失败:`, err); |
| | | reject(err); |
| | | } |
| | | }); |
| | | }); |
| | | }; |
| | | |
| | | // 安全获取存储项,失败时返回默认值而不是拒绝Promise |
| | | const getItemSafe = (key, defaultValue = null) => { |
| | | return new Promise((resolve) => { |
| | | if (!key) { |
| | | resolve(defaultValue); |
| | | return; |
| | | } |
| | | |
| | | wx.getStorage({ |
| | | key: key, |
| | | success: (res) => resolve(res.data), |
| | | fail: (err) => { |
| | | // 在开发环境下记录警告,但不作为错误处理 |
| | | // 数据不存在是正常情况,不需要作为警告输出 |
| | | if (err.errMsg !== "getStorage:fail data not found") { |
| | | console.warn(`安全获取存储项 ${key} 失败:`, err); |
| | | } else { |
| | | console.log(`存储项 ${key} 不存在,返回默认值`); |
| | | } |
| | | resolve(defaultValue); |
| | | } |
| | | }); |
| | | }); |
| | | }; |
| | | |
| | | const removeItem = (key) => { |
| | | return new Promise((resolve, reject) => { |
| | | if (!key) { |
| | | reject(new Error('存储键不能为空')); |
| | | return; |
| | | } |
| | | |
| | | wx.removeStorage({ |
| | | key: key, |
| | | success: resolve, |
| | | fail: reject |
| | | fail: (err) => { |
| | | console.error(`删除存储项 ${key} 失败:`, err); |
| | | reject(err); |
| | | } |
| | | }); |
| | | }); |
| | | }; |
| | |
| | | return new Promise((resolve, reject) => { |
| | | wx.clearStorage({ |
| | | success: resolve, |
| | | fail: reject |
| | | fail: (err) => { |
| | | console.error('清除存储失败:', err); |
| | | reject(err); |
| | | } |
| | | }); |
| | | }); |
| | | }; |
| | | |
| | | /** |
| | | * 判断本地是否保存了某个key |
| | | * @param {} key |
| | | * @param {String} key 存储键 |
| | | * @returns {Boolean} 是否存在该键 |
| | | */ |
| | | const isHasKeySync= (key) => { |
| | | const isHasKeySync = (key) => { |
| | | if (!key) return false; |
| | | |
| | | try { |
| | | const res = wx.getStorageInfoSync(); |
| | | return res.keys.includes(key); |
| | | } catch (e) { |
| | | console.error('Failed to get storage info:', e); |
| | | console.error('获取存储信息失败:', e); |
| | | return false; |
| | | } |
| | | }; |
| | |
| | | module.exports = { |
| | | setItem, |
| | | getItem, |
| | | getItemSafe, |
| | | removeItem, |
| | | clear, |
| | | isHasKeySync |