在小程序中如何使用Promise封装wx.request()(黑马优购)
2021/5/13 22:31:03
本文主要是介绍在小程序中如何使用Promise封装wx.request()(黑马优购),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.目录
在根目录下创建http
目录及api.js
文件fetch.js
以及http.js
文件;
在根目录下创建env目录,创建index.js配置并导出多个开发环境
module.exports={ //开发环境 Dev:{ "BaseUrl":"https://api-hmugo-web.itheima.net/api/public/v1" }, //测试环境 Test:{ "BaseUrl":"" }, //生产环境 Prod:{ "BaseUrl": "" } }
在http文件夹中的api.js中统一管理,请求的url地址
module.exports={ "lunbo":"/home/swiperdata", "syfl":"/home/catitems", "louc":"/home/floordata", "cate":"/categories", "list":"/goods/search", "xq":"/goods/detail", "jy":"/goods/qsearch" }
在fetch.js中用promise对wx.request()进行封装
module.exports = (url, method, data) => { let p = new Promise((resolve, reject) => { wx.request({ url: url, method: method, data: Object.assign({}, data), header: { 'Content-Type': 'application/text' }, success(res) { resolve(res) }, fail(err) { reject(err) } }) }) return p; }
在http.js,根据当前环境,设置相应的baseUrl
, 引入fetch中封装好的promise请求,封装基础的get\post\put\upload等请求方法
const api = require('./api') const fetch = require('./fetch') const evn = require('../evn/index') let baseUrl = evn.Dev.BaseUrl function banner() { return fetch(baseUrl + api.lunbo, 'get', {}) }; function syfl() { return fetch(baseUrl + api.syfl, 'get', {}) }; function louc() { return fetch(baseUrl + api.louc, 'get', {}) }; function cate() { return fetch(baseUrl + api.cate, 'get', {}) } function list(data) { return fetch(baseUrl + api.list, 'get', data)//data为传递的参数 } function xq(data) { return fetch(baseUrl + api.xq, 'get', data) } function jy(data) { return fetch(baseUrl + api.jy, 'get', data) } module.exports = {//导出 banner, syfl, louc, cate, list, xq, jy, }
在全局app.js中导入http,注册到根组件
const http=require('./http/http.js') // App.config=config[env]; App({ http, // http.fetch })
在具体页面导入,并使用;
//获取应用实例 const app = getApp(); Page({ data: { list:[] } onLoad: function () { app.http.banner(//这里为传递的参数// ).then((res)=>{ this.setData({ list: res.data.list }) }) }
使用promise封装wx.request() 在根目录下创建http目录及api.js文件fetch.js以及http.js文件; 1、首先在env目录下创建index.js,里面配置开发环境并将其导出(配置不同的开发环境:开发环境、测试环境、生产环境) 三个环境也可以说是系统开发的三个阶段:开发->测试->上线,其中生产环境也就是通常说的真实环境。 - 开发环境:开发环境是程序猿们专门用于开发的服务器,配置可以比较随意,为了开发调试方便,一般打开全部错误报告。 - 测试环境:一般是克隆一份生产环境的配置,一个程序在测试环境工作不正常,那么肯定不能把它发布到生产机上。 - 生产环境:是值正式提供对外服务的,一般会关掉错误报告,打开错误日志。 三个环境也可以说是系统开发的三个阶段:开发->测试->上线,其中生产环境也就是通常说的真实环境。 2、在api.js中统一管理,请求的url地址(定义请求路径并抛出对象) 3、在fetch.js中用promise对wx.request()进行封装(封装wx.request()网络模块 、抛出一个函数 这个函数会返回一个promise对象) 4、在http.js,根据当前环境,设置相应的baseUrl, 引入fetch中封装好的promise请求,封装基础的get\post\put\upload等请求方法,设置请求体,带上token和异常处理等; 设置对应的方法并导出;(入口函数,引入环境变量,路径和方法在此处统一调用;确定当前环境、请求的函数,将封装好的方法抛出) 5、在全局app.js中(用require导入)导入http,注册到根组件,在具体页面导入(用getApp导入全局的app组件),并使用; const app = getApp();
这篇关于在小程序中如何使用Promise封装wx.request()(黑马优购)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-22微信小程序的接口信息py可以抓到吗?-icode9专业技术文章分享
- 2024-11-22怎样解析出微信小程序二维码带的参数?-icode9专业技术文章分享
- 2024-11-22微信小程序二维码怎样解析成链接?-icode9专业技术文章分享
- 2024-11-22微信小程序接口地址的域名需要怎么设置?-icode9专业技术文章分享
- 2024-11-22微信小程序的业务域名有什么作用-icode9专业技术文章分享
- 2024-11-22微信小程序 image有类似html5的onload吗?-icode9专业技术文章分享
- 2024-11-22微信小程序中怎么实现文本内容超出行数后显示省略号?-icode9专业技术文章分享
- 2024-11-22微信小程序怎么实现分享样式定制和图片定制功能?-icode9专业技术文章分享
- 2024-11-20微信小程序全栈教程:从零开始的全攻略
- 2024-11-19微信小程序全栈学习:从零开始的完整指南