小弟不才,正在学习Vue
中,打算拿豆瓣的API来练练手写个单页面应用
遇到了个关于http请求
方面的问题。
如图所示:
我需要在电影列表组件和展示完整电影列表的路由页面都使用同一份用豆瓣api请求回来的放在vuex
中的电影列表数据。
我是在图示里的组件create()
时调用action
来获取数据的,在展示完整电影列表的路由页面我也打算在需要此数据的组件create()
时请求。但是哪一个页面路由组件会被先创建(通过浏览器地址直接输入的话)无法确定
。
就会有一个问题。
在打开第一个页面的时候快速跳转至第二个需要同样数据的页面,此时第一个页面中组件的http请求已经发出但数据仍然未回来,vuex
中没有数据,这时,我怎样知道数据正在请求中,而不需要再进行一次请求
?
我自己想到两个方法,但还想要各位赐教更好的方法:
把http请求的action调用放在包含此<router-view>的父级组件的create()中,在子组件里就不用担心是否进行过请求是。
我的http请求是用vue-resource
来进行的,可以进行一次请求之后,把vue-resource
返回的Promise
用变量保存起来,并在Resolved
后把变量变为假值,再次调用的时候看是否有保存promise
再决定是否再次请求。可是如果别的地方也有类似的问题的话,就得写类似的东西。如果要封装的话,有些请求,请求发送的参数不同,存储promise
就会变得麻烦了。
所以请教各位是否有更好的办法,或者说是一个更好的业务逻辑思想来纠正我的错误。
烙印99
有只小跳蛙
相关分类