| 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 | 
| }; |