前言
众所周知,js的异步经历了cb => generator => promise => async await ;每一步的进化,其实都是js开发者对于异步变成的重大改进, nodejs的框架是最好的证明express(cb) => koa1(generator) => koa2(promise/async await);
微信小程序自发布以来, 引来的无数开发者的目光,然后小程序版本的更新,只是带来的功能上的增加,对于开发者的开发体验改变不大(除了即将要到来的支持分包加载和npm),微信小程序官方提供的例如网络请求和文件操作的需要异步操作的api,无一例外是采用最原始的cb方式来编程,这在已经es2018的今天,是无法忍受的。
这里提供一个思路,用以将微信小程序的原生api转换成promise,以便可以更爽的使用, 先贴上github
实现
- 因为api众多,逐一实现也不现实, 我们先写一个工厂方法,用以将api接口promise化, 并且导出,让使用者在使用过程中可以根据自己的需要转换接口
1 | /** |
- 将现有的异步方法(有success和fail方法的api)全部转换并导出
1 | const funcs = [ |
至此,我们已经将所有的现有api全部转换成了promise。
使用
- 本地使用
如果你的环境是原生环境,即没有使用npm,可以直接去github下载源码,然后导入使用,如下:
1 | // 引入方法 |
- 如果你使用其他小程序框架(mpvue,wepy等),可以使用npm环境,可以先在npm下载本包,然后导入使用,使用方法同上。
1 | npm install wx-promisfy --save-dev |
