美文网首页
乐观更新与保守更新

乐观更新与保守更新

作者: SingleDiego | 来源:发表于2019-08-19 22:17 被阅读0次

以删除一个帖子为例,保守更新的做法是先像服务器发出请求,等到收到回复请求成功后再在前端删除对应的帖子。但这种做法会使得页面有较大的延时感。

保守更新(Pessimistic Update):

handleDelete = async (post) => {
  await axios.delete(apiEndPoint + '/' + post.id);
  const posts = this.state.posts.filter(p => p.id !== post.id);
  this.setState({posts});
};

乐观更新则是先更改了前端页面,再像服务器发送请求,如果成功则结束操作,如果不成功,则页面回滚到先前状态。

乐观更新(Optimistic Update):

handleDelete = async (post) => {
  const originalPosts = this.state.posts;
  const posts = this.state.posts.filter(p => p.id !== post.id);
  this.setState({posts});

  try {
    await axios.delete(apiEndPoint + '/' + post.id);
  } 
  catch (ex) {
    alert('删除帖子出错');
    this.setState({posts: originalPosts});
  }
};

对于请求服务器过程中可能发生的错误,我们可以做个判断:

handleDelete = async (post) => {
  const originalPosts = this.state.posts;
  const posts = this.state.posts.filter(p => p.id !== post.id);
  this.setState({posts});

  try {
    await axios.delete(apiEndPoint + '/' + post.id);
  } 
  catch (ex) {
    if (ex.response && ex.response.status === 404) {
      alert('该帖子不存在')
    } else {
      alert('出现一个未知错误');
      console.log(ex);
    }
    this.setState({posts: originalPosts});
  }
};

相关文章

  • 乐观更新与保守更新

    以删除一个帖子为例,保守更新的做法是先像服务器发出请求,等到收到回复请求成功后再在前端删除对应的帖子。但这种做法会...

  • MySQL的锁

    1、乐观锁与悲观锁是两种并发控制的思想,可用于解决丢失更新问题:乐观锁会“乐观地”假定大概率不会发生并发更新冲突,...

  • Mybatis-Plus乐观锁应用以及乐观锁讲解

    1.乐观锁 主要适用场景:当要更新一条记录的时候,希望这条记录没有被别人更新,也就是说实现线程安全的数据更新乐观锁...

  • 学习:文案较多的海报应该如何设计?

    哈喽,大家好,乐观做设计又与大家见面啦!乐观设计,乐于分享,感谢大家阅读与关注,分享知识,感受设计,每天都在更新。...

  • 经验:一张名片诞生前需要知道哪些印刷知识?

    哈喽,大家好,乐观做设计又与大家见面啦!乐观设计,乐于分享,感谢大家阅读与关注,分享知识,感受设计,每天都在更新。...

  • 达人:欢迎光临田中达也的微观世界

    哈喽,大家好,乐观做设计又与大家见面啦!乐观设计,乐于分享,感谢大家阅读与关注,分享知识,感受设计,每天都在更新。...

  • 经验:那些时尚活泼的插画原来都这么设计

    哈喽,大家好,乐观做设计又与大家见面啦!乐观设计,乐于分享,感谢大家阅读与关注,分享知识,感受设计,每天都在更新。...

  • Mybatis-Plus乐观锁插件

    乐观锁插件 主要适用场景 意图: 当要更新一条记录的时候,希望这条记录没有被别人更新 乐观锁实现方式: 取出记录时...

  • 支付平台架构评审 摘录

    乐观锁更新前先查一下版本号或时间戳,要更新的时候根据版本号和时间戳更新. 观锁在失败的时候再尝试多次更新,导致并发...

  • npm更新与node更新

    npm:npm update -g node:npm install -g nn latest

网友评论

      本文标题:乐观更新与保守更新

      本文链接:https://www.haomeiwen.com/subject/fjrysctx.html