微信小程序开发实战 ②①(网路请求Promise化)

请添加图片描述

@作者 : SYFStrive

 
请添加图片描述

@作者 : SYFStrive

@博客首页 : HomePage

📜: 微信小程序

📌:个人社区(欢迎大佬们加入) 👉:社区链接🔗

📌:觉得文章不错可以点点关注 👉:专栏连接🔗

💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞😀

请添加图片描述
在这里插入图片描述
相关专栏

👉 微信小程序(🔥)

使用 npm 包 - API Promise化

   1、 基于回调函数的异步 API 的缺点

默认情况下,小程序官方提供的异步 API 都是基于回调函数实现的,例如,网络请求的 API 需要按照如下的方
式调用:

  app(){
    wx.request({
      url: 'url',
      method:'',
      success:()=>{},
      fail:()=>{},
      complate:()=>{}
    })
  }

缺点:容易造成回调地狱的问题,代码的可读性、维护性差!

   2、 什么是 API Promise 化

API Promise化,指的是通过额外的配置,将官方提供的、基于回调函数的异步 API,升级改造为基于Promise 的异步 API,从而提高代码的可读性、维护性,避免回调地狱的问题。

   3、 实现 API Promise 化

在小程序中,实现 API Promise 化主要依赖于 miniprogram-api-promise 这个第三方的 npm 包。

安装:npm i --save miniprogram-api-promise@1.0.4

API的Primise化如 👇

// 引入promisifyAll
import {promisifyAll} from 'miniprogram-api-promise'
// 定义成员
const wxp=wx.p={}
// API Promise化
promisifyAll(wx,wxp)

   4、 使用

Promise文章链接👉 Promise

使用如下:

  app(){
    //普通网路请求
    wx.request({
      url: 'url',
      method:'',
      success:()=>{},
      fail:()=>{},
      complate:()=>{}
    }),

    //Promise化请求 👉 返回的是一个Promise(解决回调地狱的问题)
    wx.p.request({
      url:'',
      method:'',
      success:()=>{},
      fail:()=>{},
      complate:()=>{}
    })
  }

不使用 npm 包 - API Promise化

  • 项目栏 管理 👇

在这里插入图片描述

   1、 ajax Promise化封装

// AjaxPromise化请求封装 参数: 请求路径、请求方法、携带参数
const AJAX = function (url:String,method:String,data?:Object) {
	const baseUrl = 'http://127.0.0.1:2323/'
	url = baseUrl + url
    return new Promise((resolve,reject)=>{
		uni.showLoading({title: '加载中'});
        wx.request({
          url,
          method,
          data,	
		  header:{
			"Content-Type":"application/json",
			"Content-Type":"application/x-www-form-urlencoded"
		  },
		  dataType:"json",
          success:(res)=>{
			  uni.hideLoading();
              resolve(res.data)
          },
          fail:(err)=>{
			  uni.hideLoading();
              reject(err)
          },
          complete:()=>{
			  uni.hideLoading();
            resolve('请求数据完毕...')
          }
        })
    })
}
export default AJAX

   2、 api请求管理

import RequestAjax from './ajax'
// -----------------api-----------------
export const GetData = (url,data,method) => RequestAjax(url,data,method)

   3、 使用

  async getData(){
        const data =await GetData("http://127.0.0.1:3000/data","小明",'GET')
        console.log(data);
  },
  • gif 演示

在这里插入图片描述

最后

在这里插入图片描述
本文到这里就结束了,大佬们的支持是我持续更新的最大动力,希望这篇文章能帮到大家💪

 

                 相关专栏连接🔗
在这里插入图片描述

下篇文章再见ヾ( ̄▽ ̄)ByeBye

在这里插入图片描述

  • 71
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 61
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 61
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SYFStrive

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值