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 } }); } });