3

我正在使用 Meteor.router 为我的网络应用程序设置一个 RESTful 接口。在某些情况下,我想异步执行调用,然后告诉调用者没问题。

我已经这样做了:

首先定义一个 Meteor 方法

Meteor.methods( {
   async: function() {
      //do nothing
   }
});

这个方法什么都不做,因为它只需要启用回调

Meteor.Router.add( '/fieldData', 'POST', function ( id ) {
   var that = this;
   Meteor.call("async", function(err, res) {
      storeFieldData( that.request.body );
   });

   return [200, 'form data created'];
} );

这里所做的是,Meteor.call 用于创建异步回调的能力。

我确信有一种更优雅的方法是我的无知阻止我找到的。谢谢你指出。

4

2 回答 2

0

我假设这是在您的服务器 js 上,您必须提供一个 REST 接口,而不必受异步 javascript 的约束。例如你可以这样做:

Meteor.Router.add( '/fieldData', 'POST', function ( id ) {
    var result = Meteor.call('foo', this.request.body)
    return result;
});
于 2013-03-12T16:00:44.323 回答
0

有一种更好的方法,如果您想访问其他 Meteor 功能,它会有所帮助:使用 Fiber

代码如下所示:

Meteor.Router.add( '/fieldData', 'POST', function () {
   var body = this.request.body;
   Fiber( function() {
      storeFieldData( body );
   }).run();

   return [200, 'form data created'];
} );

我不知道的是如何从 Fiber 内部实际返回一些东西:-(

于 2013-05-07T21:13:00.763 回答