「小程式JAVA實戰」小程式資料快取API(53)
剛開始寫小程式的時候,使用者資訊我是按照app.js增加全域性變數的方式來做的,後來當看到搜尋外掛可以儲存上次的搜尋內容,讓我知道了原來小程式還有快取的API,來一起了解下。原始碼https://github.com/limingios/wxProgram.git 中No.15
資料快取
-
官方網址
>https://developers.weixin.qq.com/miniprogram/dev/api/storage/wx.getStorage.html
-
發現一個問題
>所有的快取方法都有非同步和同步,有老鐵肯定有疑問,我來解答看我分析的對不?在微信小程式的開發中,快取會用到如下的幾個方法,分別對應一個同步和非同步的方法,最大上限是10MB。在涉及到快取的時候,一般我們建議用同步的寫法,非同步的寫法其實是一種非常危險的寫法,第一點,它會讓程式碼變得難以閱讀,第二點,它會引起許多未知的錯誤,如果對非同步的方法不是很熟悉,建議能用同步就用同步,千萬不要用非同步,當然小程式裡面有些情況是必須用非同步的,但是在小程式裡面用到非同步的情況會非常的少,同步的缺陷是什麼呢?方法執行很慢的時候整個UI會卡住,同步的方法執行不過去,後面的方法就走不了,所以呢,程式碼的耗時就會非常長,這是同步的缺點。那麼非同步的好處呢,程式碼會立刻走完,然後獲取到快取以後,由框架再去呼叫success,整個流程會很快的走完,不會讓UI有停滯的效果,這是非同步的一個優勢。般建議該用同步的時候就要用同步,同步解決不了的問題再用非同步,我們都知道非同步方法的除錯有點困難,這也是我們不建議用非同步的原因。當然這個也要根據自己的業務來進行判斷看是否用同步還是非同步,當你的業務需要解耦的情況下,去使用非同步,當你的業務是同步的話,那就最好還是使用同步,也就是說非同步的操作是需要業務的配合來設計的,小程式的快取上限是10MB,你試想一下子提取10MB的資料出來,會是什麼樣的情況,那這個時候你就要考慮非同步的情況了。因為它整個的過程有可能很慢,給使用者的體驗也非常不好,但是我覺得這一種情況應該非常少。
介紹快取方法
-
wx.getStorage(Object object)
>從本地快取中非同步獲取指定 key 的內容
https://developers.weixin.qq.com/miniprogram/dev/api/storage/wx.getStorage.html
-
wx.getStorageSync(string key)
>wx.getStorage 的同步版本
-
wx.setStorage(Object object)
>將資料儲存在本地快取中指定的 key 中,會覆蓋掉原來該 key 對應的內容。
https://developers.weixin.qq.com/miniprogram/dev/api/storage/wx.setStorage.html
-
wx.setStorageSync(string key, Object|string data)
>wx.setStorage 的同步版本
-
wx.removeStorage(Object object)
>從本地快取中移除指定 key
-
wx.removeStorageSync(string key)
>wx.removeStorage 的同步版本
-
wx.clearStorage(Object object)
>清理本地資料快取
-
wx.clearStorageSync()
>wx.clearStorage 的同步版本
-
wx.getStorageInfo(Object object)
>非同步獲取當前storage的相關資訊
-
Object wx.getStorageInfoSync()
>wx.getStorageInfo 的同步版本
更改現有的使用者儲存方法使用快取
- app.js 修改
//app.js App({ serverUrl:"http://127.0.0.1:8081/", userInfo:null, setGlobalUserInfo:function(user){ wx.setStorageSync("userInfo", user); }, getGlobalUserInfo: function () { return wx.getStorageSync("userInfo"); } })
-
app.js 修改
>原來的userInfo賦值和取值都改成從快取中取到。
PS:通過快取的時候進行控制,更方便。如果是全域性變數的話肯定沒有快取方便。
>>原創文章,歡迎轉載。轉載請註明:轉載自,謝謝!>>原文連結地址: