想达到本文效果,需使用wepy框架。不了解wepy?转https://tencent.github.io/wepy/index.html
什么是async/await?
在最新的ES7(ES2017)中提出的前端异步特性:async、await。
async顾名思义是“异步”的意思,async用于声明一个函数是异步的。而await从字面意思上是“等待”的意思,就是用于等待异步完成。也就是我们平常所说的异步等待。不过需注意await只能在async函数中使用。
为什么需要async/await?
在async/await之前,我们有三种方式写异步代码
1. 嵌套回调
其中思想就是,a函数执行完了得到的结果后在执行b。
形如
wx.getSetting({
success(res) {
console.log(res.authSetting['scope.userLocation']);
if (!res.authSetting['scope.userLocation']) {
wx.authorize({
scope: 'scope.userLocation',
fail(res) {
Toast('无法获取位置,采用默认排序');
}
});
} else {
wx.getLocation({
type: 'wgs84',
success(res) {
_this.setData({ location: res });
console.log('您的位置信息:', res);
},
fail() {
Toast('无法获取位置,采用默认排序');
}
});
}
}
});
上面的代码你不用看,就会感觉。这啥东西?乱七八糟的。这就是嵌套回调。很不巧,原生微信小程序开发就是这样的。
2. 以Promise为主的链式回调
所谓Promise,简单来说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。形如
var p1 = new Promise((resolve, reject) => {
setTimeout(resolve, 1000, 'done');
})
p1.then(data=>{
console.log(data); // done
})
如果你的函数够多的话,那么就会一直then()下去。