wx.request({
method: '',
url: '',
data: {},
success: () => {}, // 成功的回调
complate: () => {}, // 无论成功与否都会执行的回调
fail: () => {} // 失败的回调
})
这种代码的缺点是显而易见的, 容易造成回调地狱的问题,代码的可读性、维护性差!而我们就想将这
种类型的代码使用 API Promise 化进行改造。
2. 什么是 API Promise 化
API Promise 化,指的是通过额外的配置,将官方提供的、基于回调函数的异步 API ,升级改造为基
于 Promise 的异步 API ,从而提高代码的可读性、维护性,避免回调地狱的问题。
3. 实现 API Promise 化
在小程序中,实现 API Promise 化主要依赖于 miniprogram-api-promise 这个第三方的 npm 包。
它的安装和使用步骤如下:
npm i --save [email protected]
- 下载完成,我们不能直接使用,而是需要再次重新构建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)
解释上述代码:
promisifyAll : 做的事就是将 wx 拥有的属性方法都copy并改造了一份给了 wxp 这个对象。
然而, wxp 只是当前 js 文件的一个常量,只能在当前文件使用。
因此:我们在 wx 上挂载一个属性 p 让他和 wxp 指向同一个空对象。
在其他页面或者组件就可以通过全局对象 wx 点出 p 来访问到 wxp。
此时 wx.p 发起异步的请求时,得到的是一个 promise 对象。
那么我们就可以使用 async/await 简化Promise语法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。