场景:某个页面(组件)中的ajax请求依赖某个参数,比如经纬度,我需要在经纬度已经获取到的情况下,才发起这个ajax请求。
比如:我先调用APP提供的定位接口,失败的话fallback到HTML5 geolocation,这个过程可能要2-3秒。
经纬度存在VUEX中
const state = {
latitude: null,
longitude: null
}
目前是created就显示loading,然后在页面(组件中)加了判断,定位有数据了就去请求ajax
computed: {
isReady () {
return this.$store.state.latitude && this.$store.state.longitude
}
},
watch: {
isReady () {
this.fetchData()
}
},
mounted () {
if (this.isReady) {
this.fetchData()
}
}
有多个页面(组件)依赖经纬度,所以获取经纬度的方法我放在了App.vue中,SPA应用只需调用一次。
那么问题来了,我觉得目前watch的方法蛮傻的,有没有更加优雅的做法?
vue-cli + vue router + vuex
获取经纬度的方法 应该返回的是promise吧, vuex的actions是可以封装异步逻辑的