小程序Request的另類用法詳解
前言
小程序中唯一能發(fā)送網(wǎng)絡(luò)請求接口數(shù)據(jù)的是wx.request接口,當(dāng)然這個接口存在諸多的限制,例如:10個并發(fā)請求限制,https限制(當(dāng)然在開發(fā)階段是可以關(guān)閉此限制),除了wx.request還有其他方法可以實現(xiàn)類型的功能嗎?當(dāng)然是有的,這個思路也源于我之前看到的一篇文章,隨便筆記下來
思路
使用云開發(fā)來發(fā)送網(wǎng)絡(luò)請求并把數(shù)據(jù)返回給小程序端。還不了解的云開發(fā)的同學(xué)請速度移步到官方【云開發(fā)】
新建一個http的云函數(shù)
// 云函數(shù)入口文件 const cloud = require('wx-server-sdk') const axios = require('axios') cloud.init() // 云函數(shù)入口函數(shù) exports.main = async (event, context) => { const wxContext = cloud.getWXContext() const { method, url, data } = event; const res = await axios.request({ method: method, url: url, data: data }); return { code: 1, data: res.data } || {code: -1, msg: 'error', data: null} }
小程序端二次封裝云函數(shù)調(diào)用
async http(options = {}) { return wx.cloud.callFunction({ name: 'http', data: { method: options.method || 'GET', url: options.url || '', data: options.data || {} } }).then(res => { return res.result }) },
小程序端使用
async onLoad() { this.http({ method: 'GET', url: 'https://www.baidu.com' }).then(res => { console.log(res) }) },
總結(jié)
這種方法可以很好繞過https的限制,當(dāng)然這只是提供一個簡單的思路,我們可以進一步細(xì)一點封裝,包括配置header proxy 等等功能,其實原理就是借助云函數(shù)做了二次轉(zhuǎn)發(fā),性能上肯定比不上原生的request
注意
async 和 await 語法糖在最新的開發(fā)工具中已經(jīng)實現(xiàn)了,開啟增強編譯即可使用,具體更新內(nèi)容請移步官方社區(qū) 微信小程序社區(qū)
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JS組件庫AlloyTouch實現(xiàn)圖片輪播過程解析
這篇文章主要介紹了JS組件庫AlloyTouch實現(xiàn)圖片輪播組件過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-05-05javascript和jquery實現(xiàn)設(shè)置和移除文本框默認(rèn)值效果代碼
這篇文章主要介紹了javascript和jquery實現(xiàn)設(shè)置和移除文本框默認(rèn)值效果代碼,本文實現(xiàn)的是類似html5 placeholder(空白提示)一種效果,需要的朋友可以參考下2015-01-01js和jquery對dom節(jié)點的操作(創(chuàng)建/追加)
本文詳細(xì)介紹下js和jquery對dom節(jié)點的操作包括創(chuàng)建、追加等等,感興趣的朋友可以參考下哈,希望對你有所幫助2013-04-04