const setItem = (key, data) => { return new Promise((resolve, reject) => { if (!key) { reject(new Error('存储键不能为空')); return; } wx.setStorage({ key: key, data: data, success: resolve, 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: (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: (err) => { console.error(`删除存储项 ${key} 失败:`, err); reject(err); } }); }); }; const clear = () => { return new Promise((resolve, reject) => { wx.clearStorage({ success: resolve, fail: (err) => { console.error('清除存储失败:', err); reject(err); } }); }); }; /** * 判断本地是否保存了某个key * @param {String} key 存储键 * @returns {Boolean} 是否存在该键 */ const isHasKeySync = (key) => { if (!key) return false; try { const res = wx.getStorageInfoSync(); return res.keys.includes(key); } catch (e) { console.error('获取存储信息失败:', e); return false; } }; module.exports = { setItem, getItem, getItemSafe, removeItem, clear, isHasKeySync };