1. 基于回调函数的异步 API 的缺点
默认情况下,小程序官方提供的异步 API 都是基于回调函数实现的,例如,网络请求的 API 需要按照如下的方式调用:
wx.request({
method:'',
url: '',
data:{},
success:()=>{},//请求成功的回调函数
fail:()=>{},//请求失败的回调函数
complete:()=>{}//请求完成的回调函数
})
缺点:容易造成回调地狱的问题,代码的可读性、维护性差!
2. 什么是 API Promise 化
API Promise化,指的是通过额外的配置,将官方提供的、基于回调函数的异步 API,升级改造为基于
Promise 的异步 API,从而提高代码的可读性、维护性,避免回调地狱的问题。
3. 实现 API Promise 化
在小程序中,实现 API Promise 化主要依赖于 miniprogram-api-promise 这个第三方的 npm 包。它的安装和使用步骤如下:
npm install --save miniprogram-api-promise@1.0.4 //不指定版本号不用加 @1.0.4
//在小程序入口文件中(app.js),只需调用一次promisifyAll() 方法,
//即可实现异步 API 的Promise 化
import { promisifyAll } from 'miniprogram-api-promise'
const wxp = wx.p ={}
// promisify all wx's api
promisifyAll(wx,wxp)
单个API 的Promise 化
import { promisify } from 'miniprogram-api-promise';
// promisify single api
promisify(wx.getSystemInfo)().then(console.log)
4. 调用 Promise 化之后的异步 API
async getInfo(){
const { data:res } = await wx.p.request({
method:'GET',
url:'https://www.xxx.com/api',
data:{ name:'zs',age:18 }
})
console.log(res)
}