post数据之后立刻get数据会获取不到最新的数据?

在写的一个页面,其中有一个评论框,我是想评论后更新页面显示所有对的最新的评论。

方案一

评论点击提交后post,然后立刻get获取最新的所有的评论数据更新页面。实践的时候发现一个问题,就是获取到的并不是最新的数据,刚刚提交的评论没有在获取到的数据中,可能后端处理是需要一定的时间的,所以获取不到最新的数据。是这样理解到的吗?

 axios.post(url + 'topic/' + topicId + '/replies',{
            accesstoken,
            reply_id : relyId,
            content
        }).then(function(){
            alert('回复成功!');
            getTopicData(renderTopic,topicId);
        }).catch(error=>{
            alert('回复失败!!!');
            console.log(error);
            alert(error);
        });
    }

getTopicData (cb,id) {
        axios.get(url+'topic/'+id).then(res => {
            cb(res.data.data);
            this.setState({
                show : false
            });
        }).catch(error => {
            console.log(error);
            this.setState({
                msg : '加载失败!'
            })
        })
    }
    
const mapStateToProps = (state) => {
    return {
        topicId : state.topicState.topicData.id
    }
}
    
const mapDispatchToProps = (dispatch) => {
    return {
        renderTopic : (topicData)=>{
            dispatch(actions.getTopic(topicData))
        }
    }
}

方案二

把要提交的评论从页面上获取到,通过dispatch来更新store,从而更新页面。

实际的工作环境中的解决方案是怎么样的???

阅读 3.8k
2 个回答

一般都方案一,get方法写到post回调里了吗?

补充修改一下:

代码我看不出问题。

之前遇到过ie浏览器缓存get方法数据,导致下次get时直接读的浏览器缓存,最后解决方案是给get方法url上加个时间戳。

在回调中去获取新数据。
如果只是简单的刷新页面,可以在回调中判断一下更新是否返回错误,如果没有错误,则刷新页面。

如果需要新的数据,如果在后端更新数据后返回你所想要get的数据。

本来应该一次请求完成的问题,为什么要分两次?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进