我何时可以同步使用Meteor.call?

时间:2014-07-24 23:27:54

标签: javascript meteor

文档说

  

最后,如果你在客户端的存根中并且调用另一个存根   方法,没有执行另一个方法(没有生成RPC,没有   “真实的”发生了)。如果那个其他方法有一个存根,那个存根就会存在   对于该方法并执行。方法调用的返回值是   存根函数的返回值。客户端执行没有问题   同步存根,这就是客户端可以使用的原因   从方法体内部同步Meteor.call形式,如   如前所述。

但我不知道这意味着什么。什么是存根?如何在存根中运行它?事件是一个存根吗?

1 个答案:

答案 0 :(得分:2)

您只能在服务器上同步使用Meteor.call。

'stub'是在客户端运行的Meteor.methods。通常它在服务器端运行。

当它在客户端运行时,它实际上没有做任何事情,这就是它的存根。这可以用于模拟它可以做些什么来创建延迟补偿的效果。

例如,你可以

Meteor.call("create_something", function(err,result) { alert(result) });

然后在您的服务器端

Meteor.methods({
    create_something: function() {
         SomeCollection.insert({date: new Date()});
    }
});

因此,当您运行Meteor.call时,它会在服务器上插入记录。如果客户端订阅了客户端,它也会得到这个结果,但过了一段时间 - 由于服务器和客户端之间的延迟。

如果将stub方法添加到客户端:

Meteor.methods({
    create_something: function() {
         SomeCollection.insert({date: new Date()});
    }
});

现在,如果你这样做,客户端将添加这个模拟非真实记录,直到服务器返回结果。

它的想法是使用户界面更具响应性,并使Meteor.call在客户端上直接{ui-wise}为SomeCollection.insert