js中await和async的理解
js的同步和异步
首先js不同于其他的语言,它是一个单线程的语言,所有的任务都会在主线程中进行执行,同步任务就是在主线程中按次序执行的任务,异步任务就是可以改变主线程中次序的任务,在js中有一个"任务队列"专门存放异步任务,当主线程的任务没了的时候再去访问"任务队列"中成功回调的方法,进行执行。
promise
promise是ES6中的,主要是为了解决回掉地狱的问题,大家可以自行百度理解
await和async
是promise的语法糖,await后,会等待结果再往下执行,使用await必须要配合async,如果await后面是一个promise的话,它会等待promise返回成功结果再往下进行,如果await后面不是promise的话,那么就会直接返回 并且继续执行下去
实际应用场景
因为公司里要做一个本地生活电影票的小程序配合其他业务,首先是获取用户当前的位置,其次获取位置后,根据位置返回当前区域内的电影,以往用promise封装接口后,我是先请求获取位置的接口,其实再获取位置的接口成功回掉中再做请求区域的电影,那么用了await后代码会更加的简洁一点。
代码示例
async created() {
await this.getLocalCity()
this.locationFlag = true
this.location = this.$store.state.locCity
console.log('location------', this.location)
this.gethotMovie()
this.getCinema()
this.wxLogin()
},