因此,假设我在前端的表所代表的列表中有一行。现在我要删除该行。我必须向后端发送API请求,以从数据库中删除该行。我应该在发送请求之前直接在客户端上可视化更改,以便客户端获得即时反馈,还是应该等到API请求完成后再应用可视更改?
1)立即在客户端上应用更改:
list.remove(something); // The table won´t show the something item anymore
service.deleteSomething(something).subscribe();
专业版:即时反馈,用户无需等待
相反:如果出现问题(在这种情况下不应该发生),那么用户在客户端上看到的内容与数据库内部的实际内容可能会有所不同(直到下一次重新加载页面)。例如,从客户端列表中删除了item,但是后来API请求实际上失败了,因此该行并未从数据库中删除,而是在视图中删除了。
2)完成API请求后,在客户端上应用更改:
service.deleteSomething(something).subscribe(something => list.remove(something));
Pro:这样,我们可以确保客户端看到的内容与数据库内部的内容完全相同。如果请求失败,则客户端视图将保持不变。
相反:用户必须稍等片刻,直到获得反馈。例如,如果他按下删除按钮以删除该行,则只会在API请求完成后才从他看到的表中删除该行。
对于API请求通常不应失败(除非令牌已过期等)的用例,通常建议使用以下两种方法中的哪一种?