无法将函数传递给调用(方法)
can't pass function to call(method)
我正在尝试将函数作为参数传递,但由于某种原因,这不起作用。在调试时我遇到了这种情况:
与 server/twitter.js:
Meteor.methods({
mytweets: function(callback){
//someday I'll asynchronously get some tweets, then callback.
console.log("server got callback=",callback)
}
})
这个有效:
在 /client/views/twitter.js 中:
Template.twitter.created = function(){
Meteor.call("mytweets",123);
}
这正确地记录了 server got callback=123
,此时一切正常。但是以下将不起作用:
这行不通。为什么?
Meteor.call('mytweets', function(){
return 123;
})
传递函数时,输出为server got callback= undefined
知道为什么吗?
注意:我是 meteor 和 javascript 的新手,所以我(还)真的不知道这是 javascript 还是与 meteor 相关的问题。我会标记两者以防万一。
提前致谢!!
根据 Meteor.call 文档,Meteor.call
期望 EJSON-able Objects
作为参数,最后是回调,它不会传递给方法本身。这就是为什么 mytweets
没有收到你的回调作为参数,但 123
收到了。
但是如果 mytweets
应该是异步的(服务器端),您将不得不使用 Meteor 插件。为此,请查看 meteor-sync-methods。
Meteor.call('method') 主要用于从客户端调用服务器方法,因此您不能真正传递回调方法。 Meteor.call() 的最后一个参数是一个异步回调。因此,一旦方法调用完成,就会调用它,这就是您取回它的方法。您可以 return 数据并将其作为结果对象传递。
// On client
Meteor.call('methodName', input1, input2, function (error, result) {
if (error) {
// Handle error
}
console.log(result.data);
});
// On server
Meteor.methods({
methodName: function (input1, input2) {
// Do stuff.
return {status: success, data: 'something here'};
}
});
我正在尝试将函数作为参数传递,但由于某种原因,这不起作用。在调试时我遇到了这种情况:
与 server/twitter.js:
Meteor.methods({
mytweets: function(callback){
//someday I'll asynchronously get some tweets, then callback.
console.log("server got callback=",callback)
}
})
这个有效:
在 /client/views/twitter.js 中:
Template.twitter.created = function(){
Meteor.call("mytweets",123);
}
这正确地记录了 server got callback=123
,此时一切正常。但是以下将不起作用:
这行不通。为什么?
Meteor.call('mytweets', function(){
return 123;
})
传递函数时,输出为server got callback= undefined
知道为什么吗?
注意:我是 meteor 和 javascript 的新手,所以我(还)真的不知道这是 javascript 还是与 meteor 相关的问题。我会标记两者以防万一。
提前致谢!!
根据 Meteor.call 文档,Meteor.call
期望 EJSON-able Objects
作为参数,最后是回调,它不会传递给方法本身。这就是为什么 mytweets
没有收到你的回调作为参数,但 123
收到了。
但是如果 mytweets
应该是异步的(服务器端),您将不得不使用 Meteor 插件。为此,请查看 meteor-sync-methods。
Meteor.call('method') 主要用于从客户端调用服务器方法,因此您不能真正传递回调方法。 Meteor.call() 的最后一个参数是一个异步回调。因此,一旦方法调用完成,就会调用它,这就是您取回它的方法。您可以 return 数据并将其作为结果对象传递。
// On client
Meteor.call('methodName', input1, input2, function (error, result) {
if (error) {
// Handle error
}
console.log(result.data);
});
// On server
Meteor.methods({
methodName: function (input1, input2) {
// Do stuff.
return {status: success, data: 'something here'};
}
});