gpt4 book ai didi

node.js - Gmail 式的收藏夹/星级功能的大致架构是怎样的?

转载 作者:太空宇宙 更新时间:2023-11-04 02:54:54 25 4
gpt4 key购买 nike

我应该首先说一下我们当前正在使用的堆栈。不过,我们愿意接受其他建议,因为这个问题(主要归结为响应时间问题)在我们的应用程序中非常普遍。

后端:带有 NodeJS、Restify 和其他各种库的 AWS ELB EC2 实例,连接到 DynamoDB。

前端:使用 Redux 进行 React。

我正在尝试构建一个功能,在我们基于 React 的前端上存档某些数据。实际上,这与“加星标”或“收藏”帖子或电子邮件非常相似,例如 Gmail 或 <--- 就在那里,使用 StackOverflow。

对我来说,这表面上似乎是一个非常简单的问题。但当我更深入地研究它时,它变得更加复杂。

主要问题来自一个事实:如果我单击“星形”图标,它应该生成一个请求并更改其图像。但是,在大多数情况下,我会等待响应后再更改前端的相应值,以防止冲突。问题是,我们的请求时间太长了。 Gmail 和 SO 会立即显示加星标和未加星标之间的转换,我觉得如果不是这个功能,用户不会高兴。

如果我只是允许它在前端自由更改并忽略它生成的请求的响应,我很快就会遇到竞争和冲突问题。特别是考虑到我们希望能够“全选”并在超过 200 条记录的表上加注星标(存档)。

那么这里的答案是什么?说实话,我完全不知所措。

最佳答案

我认为这里可能有用的概念是“乐观的用户界面”。这是一种通常用于您所描述的模式,用于向用户保持紧密的反馈循环,向他们表明他们的操作已经完成了某些操作,假设在异步运行某些内容(例如 HTTP 请求)时得到了积极的结果,如果出现错误,您可以恢复积极状态并提醒用户注意问题。

在 React 实践中,如果您使用 Redux 之类的东西,您可以创建某种“归档”操作,将每个选定项目的状态设置为 reducer 中的“已归档”,同时向后端发出请求,以使用已归档状态更新服务器。假设您使用 async/await 创建服务器请求,您可以将其包装在 try/catch 中,其中 catch 检测到失败的请求并恢复化简器中所选项目的“已归档”状态,并且可能向用户显示错误消息。

关于node.js - Gmail 式的收藏夹/星级功能的大致架构是怎样的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55013218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com