異步就是不管保沒保存成功,程序都會繼續往下執行。同步是等保存成功了,才會執行下面的代碼。使用異步,性能會更好;而使用同步,數據會更安全。
1 uni.setStorage(OBJECT)
將數據存儲在本地緩存中指定的 key 中,會覆蓋掉原來該 key 對應的內容,這是一個異步接口。
saveUserName2Storage() {uni.setStorage({key: 'userName',data: 'zhaoshuai-lc',success: e => {}});}
2 uni.setStorageSync(KEY,DATA)
將 data 存儲在本地緩存中指定的 key 中,會覆蓋掉原來該 key 對應的內容,這是一個同步接口。
saveUserName2Storage() {uni.setStorageSync('userName', 'zhaoshuai-lc');}
3 uni.getStorage(OBJECT)
從本地緩存中異步獲取指定 key 對應的內容。
saveUserName2Storage() {uni.getStorage({key: 'storage_key',success: function (res) {console.log(res.data);}});}
4 uni.getStorageSync(KEY)
從本地緩存中同步獲取指定 key 對應的內容。
saveUserName2Storage() {const value = uni.getStorageSync('storage_key');}
5 uni.removeStorage(OBJECT)
從本地緩存中異步移除指定 key。
uni.removeStorage({key: 'storage_key',success: function (res) {console.log('success');}
});
6 uni.removeStorageSync(KEY)
從本地緩存中同步移除指定 key。
try {uni.removeStorageSync('storage_key');
} catch (e) {// error
}
7 uni.clearStorage()
清理本地數據緩存。
uni.clearStorage();
8 uni.clearStorageSync()
同步清理本地數據緩存。
try {uni.clearStorageSync();
} catch (e) {// error
}
uni-app的Storage在不同端的實現不同:
- H5端為localStorage,瀏覽器限制5M大小,是緩存概念,可能會被清理
- App端為原生的plus.storage,無大小限制,不是緩存,是持久化的
- 各個小程序端為其自帶的storage
api,數據存儲生命周期跟小程序本身一致,即除用戶主動刪除或超過一定時間被自動清理,否則數據都一直可用。 - 微信小程序單個 key 允許存儲的最大數據長度為 1MB,所有數據存儲上限為 10MB。