meteor方法调用 – 等待方法完成

我真的很难与meteorcallback。 我有一个客户端调用服务器端的方法,但是当callback从服务器回来,我得到一个未定义的结果。 据我所知,这是因为服务器没有完成POST,但已经发送callback。 我是meteor的新手,这看起来非常困难。 我到目前为止:

客户:

Meteor.call("createCustomer", city, fname, lname, email, function(error, result) { if (error) { console.log("error: " + error); } else { console.log("result: " + result) } }); 

服务器:

 Meteor.methods({ 'createCustomer': function(city, fname, lname, email) { HTTP.call("POST", url+'/customer?api_key='+process.env.API_TOKEN ,{ data: { city: city, first_name: fnam, last_name: lname, email: email } }, function (error, result) { if (error) { return 'error'; } else { return'success'; } }); } }); 

我可能正在做一些非常愚蠢的事情,或者可能比我预想的要复杂得多,但是任何帮助都会很长时间!

这就是Meteor.wrapAsync的用途。 它创build一个asynchronous函数的同步版本。 尝试这个:

 'createCustomer': function(city, fname, lname, email) { var call = Meteor.wrapAsync(HTTP.call, HTTP); return call("POST", url+'/customer?api_key='+process.env.API_TOKEN ,{ data: { city: city, first_name: fname, last_name: lname, email: email } }); } 

扩大我原来的评论。

在服务器上如果不传递callback, HTTP.call同步运行,不需要使用Meteor.wrapAsync

 Meteor.methods({ createCustomer(city, first_name, last_name, email) { return HTTP.post(`${url}/customer?api_key=${process.env.API_TOKEN}`, { data: { city, first_name, last_name, email } }); } });