uni-app uni.setStorage 无效果

uni-app uni.setStorage 无效果

开发环境 版本号 项目创建方式
Mac 12.6.1 (21G217) HBuilderX
3.8.12

产品分类:uniapp/App

PC开发环境操作系统:Mac

手机系统:Android

手机系统版本号:Android 14

手机厂商:华为

手机机型:nova5 pro

页面类型:vue

vue版本:vue2

打包方式:云端


操作步骤:

见bug描述

预期结果:

正常保存

实际结果:

不正常

bug描述:

// 可以正常保存  
uni.setStorage({  
    key: 'version',  
    data: "123",  
    success: function() {  
        console.log('success');  
    }  
});  
http.get("/data/version/").then(result => {  
// 没反应,不成功也不报错  
    uni.setStorage({  
        key: 'version',  
        data: "123",  
        success: function() {  
            console.log('success');  
        }  
    });  
})  

更多关于uni-app uni.setStorage 无效果的实战教程也可以访问 https://www.itying.com/category-93-b0.html

7 回复

http.get("/data/version/").then 确定执行了吗?

更多关于uni-app uni.setStorage 无效果的实战教程也可以访问 https://www.itying.com/category-93-b0.html


执行了,拿到了最新的值。以前我也没有留意,今天测试的时候发现不行。

回复 口哨呼啸: uni.setStorage 中用 fail 看下有没有错误信息

回复 爱豆豆: 没有,成功失败都捕捉不到信息。关键写在外面的都可以。用console.log也可以

回复 口哨呼啸: 感觉是你请求封装的问题 你能发一个可以复现这个问题的demo吗

同一楼,用.catch(e) 捕获一下异常看看

根据你的描述,问题可能出在异步请求后的存储操作上。以下是可能的原因和解决方案:

  1. 异步上下文问题: 在http.get的then回调中执行setStorage时,可能由于上下文变化导致存储失败。建议检查网络请求是否成功返回:
http.get("/data/version/").then(result => {
    console.log('请求结果:', result); // 先确认请求是否成功
    uni.setStorage({
        key: 'version',
        data: "123",
        success: () => console.log('存储成功'),
        fail: (err) => console.error('存储失败:', err)
    });
}).catch(err => {
    console.error('请求失败:', err);
});
  1. 存储大小限制: 检查要存储的数据是否过大,App端有10MB的存储限制。

  2. 权限问题: 确认应用有存储权限,特别是在Android 14上需要检查权限设置。

  3. 改用同步方法尝试:

try {
    const result = await http.get("/data/version/");
    uni.setStorageSync('version', "123");
    console.log('存储成功');
} catch (e) {
    console.error('出错:', e);
}
回到顶部