Meteor.call中的Async回调不会等待Meteor.method的结果。这是代码。
Meteor.call("fetchData",function (err,res) {
if (err){
console.log("error ", err);
}else {
console.log("success ", res);
return res;
}
});//calling this from onRendered of client/somejs.js
这是方法
fetchData :function(){
HTTP.call("POST","http://localhost:8080",{
data:'{"apple":"grape"}'
},function (err,res) {
if (err){
console.log("error ", err);
}else {
console.log("success ", res);
return res;
}
})
}//Server/methods.js
当触发Meteor.call时,我会在服务器上以[{1}}的形式登录其结果。
在客户端,我得到success
。
客户端上的调用不等待结果。我也在服务器上尝试了光纤和同步执行。它对我不起作用。在这种情况下,发布被阻止(我猜是由于API调用)。
另一件事是我尝试使用数据库查询而不是API调用。这很好。我从方法中得到结果。
我哪里出错。帮助。
由于
答案 0 :(得分:1)
Sanjith。
你正走在正确的道路上。默认情况下,Meteor的方法是异步的,因此客户端需要一些“等待”机制。为此,我建议使用Meteor.wrapAsync或Promises。以下是关于实施两者的两个详细解释:
https://themeteorchef.com/snippets/synchronous-methods/#tmc-using-wrapasync
第二个链接更侧重于使用promises构建代码,但提供了一个很好的演示,说明如何调用依赖Promise响应的方法。