Meteor.js上的这段代码出错了:
客户端:
Meteor.call("logUser", function(myvar){
console.log("le chat client : "+myvar) ;
Session.set("chatId", myvar);
}); 服务器端:
Meteor.methods({
logUser : function(mycallback){
mycallback("myString");
}
});我真的不明白为什么它不起作用,方法被很好地触发,但是当调用"mycallback“时,代码会中断:
“未定义不是函数”
发布于 2013-11-03 17:51:26
解决办法:
客户端:
Meteor.call("logUser", function(error , result){
if(error)
console.log(error.reason);
else
console.log(result);
});服务器端:
Meteor.methods({
logUser : function(){
return "myString";
}
});发布于 2013-11-03 17:39:39
不能将函数作为参数传递给Meteor方法。
为什么是这样?
这里发生的情况是,传递给Meteor.call的函数实际上被看作是在服务器上执行方法异步执行之后在客户机上执行的回调,所以这就是为什么您被欺骗地认为该方法被很好地触发,而显然不是这样。
因此,meteor方法根本没有传递任何参数,这就是为什么在代码中没有定义“回调”的原因。
引用流星文档:(call)
“如果将回调函数作为最后一个参数(不能作为方法的参数,因为函数不可序列化),则该方法将异步运行。”
因此,您在这里做了一些错误的事情(会话在服务器上是不可用的),我认为您应该重新考虑您想要达到的目标。
https://stackoverflow.com/questions/19755637
复制相似问题