调用组件中的方法时 await 应该怎么用?
onLoad(options) {
this.requestUrl = 'users/' + options.user_id + '/topics'
// 组件数据改变,也需要调用 this.$apply()
this.$apply()
// 调用组件 reload 方法
this.$invoke('topiclist', 'reload')
}
// 下拉刷新
async onPullDownRefresh() {
// 调用组件 reload 方法
await this.$invoke('topiclist', 'reload')
wepy.stopPullDownRefresh()
}
// 上拉加载更多
async onReachBottom () {
// 调用组件 loadMore 方法
this.$invoke('topiclist', 'loadMore')
}
这里的 onPullDownRefresh 方法中 在调用子组件的时候,加入了 await this.$invoke('topiclist', 'reload'),在 onLoad 方法中,同样是调用子组件的 reload 为什么此时不用 await
关于 LearnKu
得理解一下异步和回调,如果不适用 await,我们在某个异步操作 A 执行完成后再执行 B 逻辑时,就需要在 A 执行成功的回调函数中写 B 的逻辑。
比如
适用了 await 呢就是把异步的操作变成同步的
等待 A 异步执行完成后,再执行 B。如果上面这些你还不理解,可以再查查 await 的文档。
那么 onPullDownRefresh 中,我们需要等待 reload 执行完成后,再调用 stopPullDownRefresh,告诉微信已经下拉刷新完了。onLoad 方法是首次加载,异步操作后并没有什么其他逻辑,所以不需要 await。