国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 熱點 > 微信 > 正文

微信小程序網(wǎng)絡(luò)層封裝的實現(xiàn)(promise, 登錄鎖)

2024-07-22 01:18:32
字體:
供稿:網(wǎng)友

一、對小程序的request的封裝

寫過小程序的應(yīng)該知道,微信的request不封裝基本上不能用,寫的顯的太冗長,而且是回調(diào)式的,回調(diào)地獄什么的就不說了,可讀性差。

下面是我的封裝代碼,順便支持一下promise。

function baseRequest({ url, method, header, data, complete }, resolve, reject) { wx.request({ url, method, header, data, success: function (res) {  // 需要判斷服務(wù)器code的用這一段  // 我司服務(wù)器返回0表示真正的成功,其他code表示各種錯誤碼  // if (res.data.code === 0) {  // resolve(res)  // } else {  // reject(res)  // }  resolve(res) }, fail: function (res) {  reject(res) }, complete: function (res) {  complete(res) } })}function requestPromise( options ) { let req = new Promise((resolve, reject) => { baseRequest(options, resolve, reject) }) return req}function get(options) { options.method = 'GET' return requestPromise(options)}function post(options) { options.method = 'POST' if (!options.header) { options.header = {} } options.header["Content-Type"] = "application/x-www-form-urlencoded" return requestPromise(options)}function put(options) { options.method = 'PUT' if (!options.header) { options.header = {} } options.header["Content-Type"] = "application/x-www-form-urlencoded" return requestPromise(options)}module.exports = { get, post, put}

如何使用:

1. 將上面的代碼寫到一個獨立的文件里,我的命名為network.js。

2. 然后將其綁定到全局的 wx 對象身上。 wx.Network = require('./network.js')。(在app.js里面綁定)

3. 實例如下

wx.Network.get({ url: 'xxx.xxx.xxx', // 請求路徑 data: {  a: "a" // 參數(shù)列表 } }).then(res => {  console.log("請求成功") }).catch(res => {  console.log("請求失敗")  })

二、登錄鎖

基本的request請求封裝完了后,還有一些特殊的需求,比如

1. 在首頁我會進行登錄, 登錄后獲得token, 然后我拿著token去請求其他需要token才可以請求的接口 (比如個人購物信息)

2. 這個時候一種做法是登錄完成前不進行需要token的請求,并且有蒙板進行攔截操作(正在登錄ing...)

3. 對于我公來說這種方法有一個致命的弊端,就是在高并發(fā)的情況下,服務(wù)器的壓力很大,首頁的登錄接口很慢才有返回(進首頁即自動登錄),這個時候,用戶看到的界面就是loading,而且可能時間比較長,如果用戶對你的產(chǎn)品粘性不高,絕大部分人直接就走了

4. 為了優(yōu)化這種情況下的用戶體驗,我們?nèi)嫒∠说卿浀膌oading,替換成了“登錄鎖”的形式

5. 效果為未登錄調(diào)用需要token的接口時,不請求,直到登錄完成后才會請求

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 金寨县| 塔河县| 高陵县| 铜山县| 施秉县| 巴楚县| 吴桥县| 林甸县| 康马县| 遂平县| 武夷山市| 云霄县| 稻城县| 镇赉县| 南川市| 敖汉旗| 呼和浩特市| 锡林浩特市| 施甸县| 通海县| 东安县| 枝江市| 泗阳县| 出国| 衡水市| 灵武市| 梧州市| 江源县| 弥渡县| 县级市| 锦州市| 沂水县| 阿拉善盟| 十堰市| 仁布县| 景东| 日土县| 丁青县| 永顺县| 秦皇岛市| 顺义区|