将小程序原生异步函数promisify后,在async/await中使用
目前,小程序中支持使用async/await有三种模式: 1、不勾选es6转es5,不勾选增强编译;该模式是纯es7的async/await,需要基础库高版本。 2、勾选es6转es5,勾选增强编译;一般是因为调用了第三方的es5插件,通过增强编译支持async/await。 3、勾选es6转es5,不勾选增强编译;手工引入runtime.js支持async/await。 据最近更新情况,原生的函数已经大部分同时原生支持同步化了,不需要本方案转化了,直接加上await即可;比如wx.chooseImage、wx.showModal。。。具体有哪些,可以自己试。 如果只是wx.request的同步化,可参考: https://developers.weixin.qq.com/community/develop/article/doc/0004cc839407a069f77a416c056813 app.js代码: function promisify(api) {
return (opt, ...arg) => {
return new Promise((resolve, reject) => {
api(Object.assign({}, opt, { success: resolve, fail: reject }), ...arg)
})
}
}
App({
globalData: {},
chooseImage: promisify(wx.chooseImage),
request: promisify(wx.request),
getUserInfo: promisify(wx.getUserInfo),
onLaunch: function () {
},
})
某page的index.js代码: const app = getApp()
testAsync: async function(){
let res = await app.chooseImage()
console.log(res)
res = await app.request({url:'url',method:'POST',data:{x:0,y:1}})
console.log(res)
},
[图片]