API Promise 化,指的是通过额外的配置,将官方提供的、基于回调函数的异步 API ,升级改造为基
于 Promise 的异步 API ,从而提高代码的可读性、维护性,避免回调地狱的问题。
3. 实现 API Promise 化
在小程序中,实现 API Promise 化主要依赖于 miniprogram-api-promise 这个第三方的 npm 包。
它的安装和使用步骤如下:
npm i --save miniprogram-api-promise@1.0.4
- 下载完成,我们不能直接使用,而是需要再次重新构建npm包
- 建议在构建前先删除原有的miniprogram_npm
- 然后再点击工具,构建npm
安装构建
导入并执行代码
// 在小程序入口文件中(app.js),只需要调用一次 promisifyAll()方法
// 即可实现异步API 的Promise化
// 按需导入一个方法
import { promisifyAll } from 'miniprogram-api-promise'
// 声明一个常量,为一个空对象,
// 并在wx顶级对象下添加一个属性p也指向该空对象,使所有成员都可以使用该对象
const wxp = wx.p = {}
// promisify all wx's api
// 参数1: wx顶级对象
// 参数2: wxp指向一个空对象
promisifyAll(wx, wxp)
上述代码写到app.js入口文件的前面(不要写到里面)
解释上述代码:
promisifyAll : 做的事就是将 wx 拥有的属性方法都copy并改造了一份给了 wxp 这个对象
然而, wxp 只是当前 js 文件的一个常量,只能在当前文件使用
因此:我们在 wx 上挂载一个属性 p 让他和 wxp 指向同一个空对象
在其他页面或者组件就可以通过全局对象 wx 点出 p 来访问到 wxp
此时 wx.p 发起异步的请求时,得到的是一个 promise 对象
那么我们就可以使用 async/await 简化Promise语法