为什么客户端不会立即从客户端方法返回?

时间:2015-08-08 05:39:31

标签: meteor iron-router

客户端方法

Meteor.methods({
  insertPost: function(data) {
    console.log('client')
    Posts.insert(data, function(err, ret) {
      console.log('client insert end')
    });
  },
});

服务器方法

Meteor.methods({
  insertPost: function(data) {
    console.log('server')
    Meteor._sleepForMs(200000);
    Posts.insert(data, function(err, ret) {
      console.log('server insert end')
    });
  },
});

客户提交

  'click #save': function(e) {
    // data = ....    
    Meteor.call('insertPost', data, function(error) {
      Router.go('/');
    });
  },

为什么客户会停留在表单页面上,而不是立即转到'/'。

1 个答案:

答案 0 :(得分:0)

以下是关于它的流星文档。

  

在客户端上调用方法定义与之关联的存根函数   同名的服务器方法。您不必为其定义存根   你的方法,如果你不想。在这种情况下,方法调用就是   比如在其他系统中进行远程过程调用,你必须等待   来自服务器的结果。

     

如果你确实定义了一个存根,当客户端调用一个服务器方法时,它会   也可以并行运行它的存根。在客户端上,a的返回值   存根被忽略。存根是因为它们的副作用:它们是   旨在模拟服务器方法的结果,   但没有等待往返延误。如果存根抛出一个   例外,它将被记录到控制台。