Meteor.call 会影响乐观 UI 吗?

Posted

技术标签:

【中文标题】Meteor.call 会影响乐观 UI 吗?【英文标题】:Does Meteor.call affect optimistic UI? 【发布时间】:2015-11-28 01:54:18 【问题描述】:

当我在客户端和服务器上执行 Meteor.call 而不是直接收集操作时。它是否删除了乐观的 UI 更改,也就是 minimongo 更改,并且只是直接更改服务器并在更新 UI 之前等待服务器上的更新?

【问题讨论】:

这还不清楚。 Meteor.call 绝对可以执行任何类型的代码。我怀疑您在这次通话中进行了数据库更新,但我不能确定。请发布您的客户端和服务器代码的MCVE。 例如,如果我调用删除用户。在页面上有一个显示表格的表格。如果我通过客户端助手执行此操作,它将立即显示并在服务器上运行相同的操作。但如果我改为使用 Meteor.call,那还会发生吗? 【参考方案1】:

Read the last section of this Meteor doc about 'How latency compensation works'

总结

如果您的 Meteor.method 仅在服务器端定义,您确实会丢失乐观的数据更改。在这种情况下,当您的客户端调用该方法时,您实际上是在调用 REST 服务并等待服务器端响应,然后您的客户端才能处理响应。

当您进行客户端集合操作时,客户端模拟 minimongo 中的更改,然后告诉服务器更改集合,然后服务器使用服务器端更改(接受或拒绝)更新客户端。

注意:如果你将 Meteor.method 共享给客户端和服务器,你可以获得乐观的性质。我从来没有这样做过,但请阅读链接

【讨论】:

以上是关于Meteor.call 会影响乐观 UI 吗?的主要内容,如果未能解决你的问题,请参考以下文章

UI节点对运行效率的影响

在运行时获取列类型会影响 MySQL 性能吗?

在代码中创建 ui 时对性能有影响吗? [关闭]

redis乐观锁

乐观锁和悲观锁

为啥旋转 UIImageView 会影响其他 UI 元素?