当前位置:   article > 正文

微信小程序promise封装_微信小程序 promise封装

微信小程序 promise封装

一. 在utils文件夹内创建一个request.js  写以下封装的 wx.request() 方法

  1. const baseURL = 'https:// + '域名' '; //公用总路径地址
  2. export const request = (params) => { //暴露出去一个函数,并且接收一个外部传入的参数
  3. let dataObj = params.data || {}; //拿到传递进来的参数
  4. let headerObj = { //这里 可以添加一些请求头
  5. 'content-type': 'application/json'
  6. }
  7. return new Promise((resolve, reject) => { //通过 Promise 对 wx.request 方法进行异步处理。
  8. wx.request({
  9. url: baseURL + params.url, //通过默认的请求地址,再加上外部传入的 具体业务地址,组成一个完整的 请求地址。
  10. method: params.method || "GET", //外部 业务调用请求时,并传入 所需的请求方法,如果没有传递请求方法,则默认为 GET 请求
  11. data: dataObj, //这里的参数,来自于外部传入的参数
  12. header: headerObj,
  13. success: res => {
  14. if (res.statusCode === 200) {
  15. resolve(res); // 请求成功后,调用 Promise 的回调 resolve() 方法,将参数返回出去到 Promise 的实例对象身上。
  16. wx.showToast({
  17. title: "请求成功",
  18. icon: "success"
  19. })
  20. return;
  21. } else {
  22. wx.showToast({
  23. title: "请求失败",
  24. icon: "error"
  25. })
  26. reject(res); //同样请求失败后,向 Promise 实例返回出 错误的信息
  27. }
  28. },
  29. // fail: err => {
  30. // reject(err) //同样请求失败后,向 Promise 实例返回出 错误的信息
  31. // }
  32. })
  33. })
  34. }

 二 . 在项目中,新建一个 API文件夹,用来做请求接口 模块化管理,这么做的原因是,虽然我们的请求接口封装了,但是整个项目中,调用接口的地方太多了,如果直接在各自页面中调用,也会显得代码十分的庸杂,所以不同的功能模块接口调用,为了避免混淆在一起,建议将api 请求接口 抽离出去,这样一来,页面的 js 部分就只着重于对发起请求前和请求响应后的数据逻辑处理。

api/index/js

  1. import { request } from "../utils/request"; //导入我们封装的请求方法。
  2. //首页请求接口
  3. export const index = (params) => { //接收页面调用传递过来的参数
  4. return request({ //调用请求方法
  5. url: "/api/science/index", //传入请求地址
  6. method: "GET", //传入请求方法
  7. data : params //这里的参数来自于页面调用时,传过来的参数
  8. })
  9. }

三 . 必须配置服务器白域名 必须是https开头的

最后:在页面中,调用上述模块中相应的 api 接口,将参数依次传递过去,同时由于我们的请求方法是采用了 Promise 的方式封装的,所以在页面逻辑调用时,还可以 使用 async 和 await 的方式,将异步代码做同步化处理。

  1. // const { from } = require("form-data");
  2. import {index} from '../../api/index.js';
  3. // pages/demos/demos.js
  4. Page({
  5. /**
  6. * 页面的初始数据
  7. */
  8. data: {
  9. },
  10. async getdatas() {
  11. let parameter = {} //页面中,收集处理好,要传递的参数
  12. let data = await index(parameter);
  13. console.log(data);
  14. //data 身上就可以直接拿到,请求回来的数据。
  15. // if (data.statusCode === 200) {
  16. // wx.showToast({
  17. // title: "首页加载成功",
  18. // icon: "success"
  19. // })
  20. // }
  21. },
  22. /**
  23. * 生命周期函数--监听页面加载
  24. */
  25. onLoad(options) {
  26. this.getdatas();
  27. },
  28. /**
  29. * 用户点击右上角分享
  30. */
  31. onShareAppMessage() {
  32. }
  33. })

原创作者:吴小糖

创作时间:2023.12.22

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/677706
推荐阅读
相关标签
  

闽ICP备14008679号