延迟补偿是向用户显示即时反馈的好方法,无需等待服务器更新通过,并消除关键时间延迟。
但在许多情况下,服务器方法可能存在问题,并且更新/插入可能会失败。因此,当服务器方法可能因任何原因失败时,延迟补偿成为这些情况下的问题。在这种情况下,向用户显示即时效果,然后回滚是非常误导的。
那么我们如何在不解决这个问题的情况下使用延迟补偿呢?
答案 0 :(得分:2)
如果服务器往返调用花费的时间超过X毫秒,则一种解决方案是使用类似微调器的指示器,这表明显示器将被视为“临时”。如果server method call确实返回,指标可能会变成✔勾选标记。
这就是为什么Meteor有一个叫做方法存根的功能。如果在客户端上使用与服务器方法同名的方法定义方法,Meteor将运行它以尝试预测服务器方法的结果。当服务器上的代码实际完成时,客户端上生成的预测将替换为服务器方法的实际结果。
失败(如服务器返回的显式错误)应该通过抛出error message来区分网络错误,而断开连接的客户端应该显示connection status消息。