目前,小程序中支持使用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)
},
没有同步请求的例子?
那也还是要打开增强编译才能用呀
请问try是怎么用呢?我这里总是报错,在用到的js里面报js is not dedined
学到了