微信小程序promise封装

这篇具有很好参考价值的文章主要介绍了微信小程序promise封装。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

const baseURL = 'https:// +  '域名' '; //公用总路径地址
export const request = (params) => {      //暴露出去一个函数,并且接收一个外部传入的参数

  let dataObj = params.data || {};   //拿到传递进来的参数
  let headerObj = {                  //这里 可以添加一些请求头
    'content-type': 'application/json'
  }

  return new Promise((resolve, reject) => {  //通过 Promise 对 wx.request 方法进行异步处理。
    wx.request({
      url: baseURL + params.url,      //通过默认的请求地址,再加上外部传入的 具体业务地址,组成一个完整的 请求地址。
      method: params.method || "GET",   //外部 业务调用请求时,并传入 所需的请求方法,如果没有传递请求方法,则默认为 GET 请求
      data: dataObj,                  //这里的参数,来自于外部传入的参数
      header: headerObj,
      success: res => {
        if (res.statusCode === 200) {
          resolve(res);                    // 请求成功后,调用 Promise 的回调 resolve() 方法,将参数返回出去到 Promise 的实例对象身上。
          wx.showToast({
            title: "请求成功",
            icon: "success"
          })
          return;
        } else {
          wx.showToast({
            title: "请求失败",
            icon: "error"
          })
          reject(res);    //同样请求失败后,向 Promise 实例返回出 错误的信息
        }
      },
      // fail: err => {
      //   reject(err)    //同样请求失败后,向 Promise 实例返回出 错误的信息
      // }
    })
  })
}

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

api/index/js

import { request } from "../utils/request";  //导入我们封装的请求方法。

//首页请求接口
export const index = (params) => {     //接收页面调用传递过来的参数
  return request({   //调用请求方法
    url: "/api/science/index",   //传入请求地址
    method: "GET",               //传入请求方法
    data : params                //这里的参数来自于页面调用时,传过来的参数  
  })
}

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

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

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

// const { from } = require("form-data");
import {index} from '../../api/index.js';

// pages/demos/demos.js
Page({

  /**
   * 页面的初始数据
   */
  data: {

  },

  async getdatas() {
    let parameter = {}         //页面中,收集处理好,要传递的参数
    let data = await index(parameter);
    console.log(data);
    //data 身上就可以直接拿到,请求回来的数据。
    // if (data.statusCode === 200) {
    //   wx.showToast({
    //     title: "首页加载成功",
    //     icon: "success"
    //   })
    // }
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.getdatas();
  },

  
  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})

原创作者:吴小糖

创作时间:2023.12.22文章来源地址https://www.toymoban.com/news/detail-769649.html

到了这里,关于微信小程序promise封装的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【微信小程序】-- 使用 npm 包 - API Promise化(四十二)

    💌 所属专栏:【微信小程序开发教程】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信 😘 😘 😘   大家好,又见面了,

    2023年04月09日
    浏览(30)
  • 微信小程序封装请求

    封装请求 解决的问题 很多页面中请求的 url 前半部分都是一样的,重复书写导致页面代码冗余复杂同时逻辑容易不清晰,所以采用单独将请求封装成一个文件(模块)使得这些问题得到解决。 前期基础知识 uni.request(wx.request) Promise 具体步骤 创建文件夹及文件 在根目录下

    2024年02月11日
    浏览(34)
  • 微信小程序封装组件

    在日常开发中,有页面之间有很多相似的组件,我们可以对其相似的代码块进行封装,进行复用 先在根目录下创建一个component文件夹 在里面创建一个目录wMyTop文件夹,然后右键点击Component创建一个组件输入wMyTop,回车 然后在wMyTop.json中把\\\"component\\\": true,改为true,意思就是开启

    2024年02月09日
    浏览(32)
  • 微信小程序网络请求封装

    网络请求地址放到url.js中,分别制定开发环境,体验环境,线上环境 网络请求的方法放到request.js中,暴露get、post、wxLogin方法 请求前显示加载中,请求结束后隐藏加载中 请求的接口方法,放到api.js中,并调用request.js中对应的方法 2.1 请求地址(url.js) 2.3 具体的请求方法(api.

    2024年02月15日
    浏览(28)
  • 微信小程序 封装request请求

    创建 utils 文件夹后创建 api 文件夹创建 request.js 创建 index.js

    2024年02月15日
    浏览(38)
  • 微信小程序开发者工具运行 uni-app 项目时报错 Uncaught (in promise) undefined

    开发者工具控制台报错 Uncaught (in promise) undefined,如图: 该错误主要是因为调试基础库过高或过低导致的。 在 微信开发者工具 — 详情 — 本地设置 — 调试基础库 中,将调试基础库版本调低或调高即可 调试基础库:此处选择的基础库为微信中的基础库版本,且仅用于开发者

    2024年02月12日
    浏览(53)
  • 微信小程序,封装身高体重选择器组件

    wxml代码: scrollLeft 保证能选择到最小值和最大值 bounces 关闭ios的回弹效果,回弹之前会有显示复数和大于最大值的情况(也可以不关闭,设置例如:min = valmin?min:val) 6:间隔+刻度的宽度 +1 是额外加一个刻度,这样才完整。 index%5===0: 5的倍数为长刻度,否则为短刻度 wxs代码

    2024年02月12日
    浏览(42)
  • 微信小程序(原生)封装弹框组件

    小程序封装原生弹框组件(一个弹框,点击确定关闭弹框,有需要的直接复制哦) 上面是组件的内容,下面是引用方法 首先第一步在app.json或者单文件json文件引入 我用的比较多就在app.json引入的 下面是文件使用方法: 只需要子啊data中控制这两个属性就可以了,喜欢的点个赞

    2024年02月11日
    浏览(40)
  • 微信小程序---封装uni.$showMsg()方法

    当数请求失败之后,经常需要调用 uni.showToast(( /* 配置对象/ 方法来提示用户时,可以在全局封装一个 uni.showMsg()方法,来简化 uni.showToast() 方法的调用。具体的改造步骤如下: 1.在main.js中,为uni对象挂载自定义的$showMsg()方法: 2.在需要提示消息的时候,直接调用uni.$showMsg()方法

    2024年01月16日
    浏览(27)
  • 微信小程序封装wx.request请求

    对微信小程序的印象我还停留在2年前刚入行的时候,那是还不懂什么是Promise,只知道小程序发请求有时候要在success回调中嵌套好多层(后来我才知道这叫 回调地狱 )。最近刚好有个小程序的项目交给我发开发,加上如今的我自认为对Promise掌握的还可以,所以这次也尝试着封

    2024年02月16日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包