this.isSimulation的定义:
Access inside a method invocation. Boolean value, true if this invocation is a stub.
Meteor.isClient 的定义:
Boolean variable. True if running in client environment.
this.isSimulation 在什么情况下有用?为什么我不能总是使用 Meteor.isClient?
我正在使用 Meteor.isClient 来检查客户端文档是否使用此简单架构属性与服务器同步:
unsynced: {
type: Boolean,
autoValue: function () {
return Meteor.isClient;
}
}
它似乎有效,但其他人说使用 this.isSimulation,但在这里这样做对我来说不起作用。
我正在接受 Slava 的评论并将其转化为答案;)
这个想法是isSimulation
可能在任何地方都可以实现,无论是在服务器上还是在客户端上。它仅在内部有用Method
语境。正如 Slava 所说,当一个服务器充当另一个服务器的客户端时,可以使用模拟。
isClient
可以用于各种代码,而不仅仅是内部Method
。它可以防止代码在可能引发错误的环境中执行(例如使用Session
在服务器上)。
为了延迟补偿,您经常在客户端和服务器上运行相同的方法,但如果您将数据插入数据库,显然客户端只能模拟这一点。因此,有时确定模拟是否正在运行或数据库是否实际更改是有帮助的。
根据您的情况,您可能需要调整检查服务器是否保存文档的方法以使其更加可靠。为此我会添加一个isServer
阻止进入方法以设置标志synced
to true
并将其设置为false
每当客户端更改数据时。理想情况下将其与成功的更新/更新插入结合起来。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)