前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【愚公系列】2022年09月 微信小程序-promise详解

【愚公系列】2022年09月 微信小程序-promise详解

作者头像
愚公搬代码
发布2022-09-30 14:19:37
2.3K0
发布2022-09-30 14:19:37
举报
文章被收录于专栏:历史专栏

文章目录


前言

Promise 其实是异步编程的一种解决方案,主要为了解决地狱回调得问题,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。

从语法上说,Promise 是一个对象,可以从改对象获取异步操作的消息。

promise有3种状态:

pending(待解决,这也是初始化状态)

fulfilled(完成)

rejected(拒绝)

promise主要是同过then来接收数据的,主要包含以下方法

all:如果有一个promise实例的状态是rejected,则新的promise实例的状态就是rejected,返回第一个promise reject的reason

any:如果有一个promise实例的状态是rejected,则新的promise实例的状态就是rejected,返回第一个promise reject的reason

race:返回最先执行结束的promise的value或者reason,不论状态是rejected还是fulfilled

一、promise详解

1.普通的request请求

代码语言:javascript
复制
wx.request({
  url: '',
  method: '',
  data: {},
  success: (res) => {
    console.log(res);
  },
  fail: (res) => {
    console.log(res);
  },
  complete: (res) => {
    console.log(res);
  }
})

2.promise的request请求

封装

代码语言:javascript
复制
requestPromise(url, method) {
  return new Promise((resolve, reject) => {
    wx.request({
      url,
      method,
      success: (res) => {
        resolve(res)
      },
      fail: (res) => {
        reject(res)
      }
    })
  })
}

使用

代码语言:javascript
复制
async getRequest() {
    try{
          const res = await this.requestPromise('API', '方法')
          console.log(res);
     }catch(err){
           console.log(err);
     }
}

3.第三方库实现小程序的所有API的promise化

安装如下包

代码语言:javascript
复制
npm i --save miniprogram-api-promise

在微信开发者工具中构建npm包就可以引入了,具体使用方式如下:

代码语言:javascript
复制
//1.在小程序入口文件中调用一次 promisifyAll()方法
import { promisifyAll } from 'miniprogram-api-promise'
//2.声明一个常量,为一个空对象
const wxp = wx.p = {}
//3.调用 promisifyAll()方法
promisifyAll(wx, wxp)

我们在全局对象上定义一个wxp指向同一个空对象

promisifyAll : 做的事就是将 wx 拥有的属性方法都 copy 并改造了一份给了 wxp这个对象

这样wxp和wx就都指向了同一个对象

代码语言:javascript
复制
//使用
async request2 () {
  const { data: res } = await wxp.request({
    url: 'API',
    method: 'GET',
  })
  // res 处理
  console.log(res)
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022/09/14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 前言
  • 一、promise详解
    • 1.普通的request请求
      • 2.promise的request请求
        • 3.第三方库实现小程序的所有API的promise化
        相关产品与服务
        云开发 CloudBase
        云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档