欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

微信小程序請求前置的方法詳解

 更新時間:2021年03月10日 12:29:47   作者:ok同學(xué)  
這篇文章主要給大家介紹了關(guān)于微信小程序請求前置的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

問題

因為我們有的頁面是在onload中去請求數(shù)據(jù)回來再渲染視圖,如果我們可以將請求數(shù)據(jù)這一步提前到小程序頁面跳轉(zhuǎn)前做,就可以早一點把數(shù)據(jù)請求回來,優(yōu)化的效果取決于頁面跳轉(zhuǎn)所需的時間。

需求

需要一種請求前置方法充分利用跳轉(zhuǎn)的時間,預(yù)先請求接口數(shù)據(jù),但是要盡量減少對舊項目的改造成本。因為現(xiàn)在我負責(zé)的小程序項目是用axios來請求接口數(shù)據(jù),所以這里只舉例axios中post的改造的思路。我這里是通過改寫post方法,在請求的時候?qū)π枰A(yù)先請求的接口進行緩存,等第二次請求的時候返回第一次請求的promise,從而不用再發(fā)起新請求。

具體步驟

1、改造post方法

http文件

let instance = axios.create({ // 創(chuàng)建axios請求實例
 // 省略部分代碼
});

let { post } = instance; // 保存原本的post方法
let cache = {}; // 請求緩存

instance.post = function(...list) {

 let [url, data = {}] = list;

 if (cache[url]) { // 返回預(yù)請求的promise
 let pre = cache[url];
 delete cache[url];
 return pre;
 }

 if (data.pre) { //以pre作為是否是預(yù)請求
 delete data.pre;
 cache[url] = post(...list)
 return cache[url];
 }

 return post(...list); //普通的請求
}

2、使用

跳轉(zhuǎn)前的頁面,即上一個頁面

// 省略部分代碼 ...

// 這是在下個頁面要去請求接口的數(shù)據(jù),提前在wx.navigateTo跳轉(zhuǎn)前請求,并存儲下來。
$http.post('/act/activities/lucky:search', { activityId: 12 , pre: true })

wx.nextTick(() => { //使用wx.nextTick是讓上面的請求先發(fā)出再跳轉(zhuǎn)
 wx.navigateTo({
 url: `${TYPE_TO_ROUTE_MAP[templateType]}?id=${activity.activityId}`
 });
})

// 省略部分代碼 ...

效果

未使用預(yù)加載

使用預(yù)加載

兩者紅色框的寬度差,表示的是提前了多少時間去請求接口數(shù)據(jù),大概在100ms左右。因為下面的靜態(tài)資源地址來自于接口的數(shù)據(jù),相當(dāng)于減少了堵塞后面資源加載100ms左右。

總結(jié)

  • 這個原理就是利用小程序跳轉(zhuǎn)這部分時間提前請求數(shù)據(jù),所以對于性能差的手機受益會大一些,雖然在開發(fā)者工具看起來能省個100ms左右,但是存在以下兩個限制
  • 頁面加載完成需要預(yù)請求的接口數(shù)據(jù)里的數(shù)據(jù)
  • 需要在上一個頁面發(fā)起預(yù)請求,并對跳轉(zhuǎn)做nextTick處理

導(dǎo)致這個優(yōu)化的收益對整個項目來說確實有些雞肋。

到此這篇關(guān)于微信小程序請求前置的文章就介紹到這了,更多相關(guān)小程序請求前置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • redux中間件之redux-thunk的具體使用

    redux中間件之redux-thunk的具體使用

    本篇文章主要介紹了redux中間件之redux-thunk的具體使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • 判斷目標(biāo)是否是window,document,和擁有tagName的Element的代碼

    判斷目標(biāo)是否是window,document,和擁有tagName的Element的代碼

    判斷目標(biāo)是否是window,document,和擁有tagName的Element的代碼,需要的朋友可以參考下。
    2010-05-05
  • JS動態(tài)改變?yōu)g覽器標(biāo)題的方法

    JS動態(tài)改變?yōu)g覽器標(biāo)題的方法

    這篇文章主要介紹了JS動態(tài)改變?yōu)g覽器標(biāo)題的方法,涉及JavaScript頁面元素結(jié)合時間函數(shù)動態(tài)操作的相關(guān)技巧,需要的朋友可以參考下
    2016-04-04
  • 完美解決IE低版本不支持call與apply的問題

    完美解決IE低版本不支持call與apply的問題

    這篇文章主要是對解決IE低版本不支持call與apply的問題進行了詳細的介紹。需要的朋友可以過來參考下,希望對大家有所幫助
    2013-12-12
  • JS異步函數(shù)隊列功能實例分析

    JS異步函數(shù)隊列功能實例分析

    這篇文章主要介紹了JS異步函數(shù)隊列功能,結(jié)合實例形式分析了異步函數(shù)隊列的應(yīng)用場景、實現(xiàn)方法與相關(guān)操作技巧,需要的朋友可以參考下
    2017-11-11
  • uniapp插件uview下表單無法動態(tài)校驗的問題解決

    uniapp插件uview下表單無法動態(tài)校驗的問題解決

    最近項目中用到了uview?在做表單時用到了校驗,發(fā)現(xiàn)校驗不友好的結(jié)果,下面這篇文章主要給大家介紹了關(guān)于uniapp插件uview下表單無法動態(tài)校驗的問題解決,需要的朋友可以參考下
    2022-12-12
  • 淺析JavaScript中的變量復(fù)制、參數(shù)傳遞和作用域鏈

    淺析JavaScript中的變量復(fù)制、參數(shù)傳遞和作用域鏈

    這篇文章主要介紹了淺析JavaScript中的變量復(fù)制、參數(shù)傳遞和作用域鏈 的相關(guān)資料,需要的朋友可以參考下
    2016-01-01
  • Javascript promise異步編程淺析

    Javascript promise異步編程淺析

    這篇文章主要介紹了Javascript promise異步編程,Promise 是異步編程的一種解決方案,可以替代傳統(tǒng)的解決方案–回調(diào)函數(shù)和事件,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-04-04
  • JavaScript 給漢字排序?qū)嵗a

    JavaScript 給漢字排序?qū)嵗a

    數(shù)組的 sort 方法默認字符的編碼排序,有時候要給一組漢字排序,默認的方法就不適用了。
    2008-06-06
  • JavaScript實現(xiàn)雪花飄落效果

    JavaScript實現(xiàn)雪花飄落效果

    這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)雪花飄落效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12

最新評論