我应该等待服务器响应还是立即更新客户端?

时间:2018-07-30 16:43:40

标签: angular asynchronous server client single-page-application

所以这个问题今天突然浮现在我的脑海。我正在使用Angular开发SPA,并且正在开发此日历模块(例如Google日历),用户可以在其中添加,编辑和删除事件。

我想知道您对采取行动后不等待服务器的看法。例如,如果用户决定添加新事件,则在他提交表单时,就会向服务器发送HTTP请求,以将该事件添加到数据库并返回响应。最初,我订阅服务器响应,并且成功接收到该响应后,便用新事件更新了UI。但是后来我更改了代码,以便在用户提交新事件后,首先在客户端和UI中对其进行更新,然后才将请求发送到服务器。

这显然具有以下风险:如果由于某种原因服务器中发生了某些问题,向用户提供警告并在添加事件后再次删除其事件可能会令人沮丧。但是出问题的机会极小。如果立即在客户端上完成更新,则用户会更快地收到反馈,从而使应用程序更加无缝和快速使用。

我实际上去了浏览器并打开了Google日历,发现它们做的完全相同。对事件执行的任何操作都会得到即时反馈,页面底部会弹出一个小窗口,显示“正在保存...”大约半秒钟,然后显示“已保存事件!”。你们对此有何看法?每种方法的利弊是什么?

1 个答案:

答案 0 :(得分:1)

关于请求隔离

即请求是否依赖于其他请求。

让我们考虑一个消息传递系统,它具有发送消息的组和用户。

  • 发送消息:很明显,在请求进行过程中更新视图具有良好的用户体验,并且允许用户并行发送许多消息,即,在不等待先前消息的情况下发送消息,只需添加少量微调至每个指示其状态的消息:

enter image description here

  • 创建组:在这种情况下,普通用户可以创建组并邀请用户加入,创建组的请求不会在请求进行时立即反映在UI上,因为在这种情况下,您可以将消息发送到尚未创建的组。