有人可以在我的代码明白为什么变量oauthToken
定义在服务器上,但没有定义时Meteor.callMeteor.call返回“不确定”结果当变量是在服务器
我打个电话来启动服务器
身体被解析的POST请求,我存储值到变量oauthToken
这打印出在服务器上,但在客户端上不会打印出来我的'结果'
这是因为客户端正在运行模拟?我们可以在异步函数中执行“返回”吗?
Server.js
Meteor.methods({
getGoodreads: function() {
request.post('http://www.goodreads.com/oauth/request_token', {oauth:{
consumer_key: '89hdg8pEoMzRdg',
consumer_secret: 'dfgdfgHthtdtjtt' }}, function (error, response, body) {
if (!error && response.statusCode == 200) {
var a = querystring.parse(body)
oauthToken = a.oauth_token
console.log(oauthToken); //prints value i need
return oauthToken
}else{
console.log('there is an error ' + error);
}
});
}
});
client.js
Template.profile.events({
'click #goodreads': function (event) {
event.preventDefault();
Meteor.call('getGoodreads', function(error, result) {
if (error) {
console.log('this is an error ');
} else {
console.log(result); //THIS IS UNDEFINED...possibilities?
}
});
}
});
仅在服务器上定义的方法?如果我没有弄错,它必须在客户端和服务器上定义 – Suppen 2015-02-11 20:18:25
只有在需要延迟补偿的情况下,上述情况才是真的 – Suppen 2015-02-11 20:20:42
服务器请求是异步的,因此该方法实际上是立即返回。这看起来像[这个问题]的副本(http://stackoverflow.com/questions/23876325/meteor-how-to-return-data-from-the-server-using-meteor-call?rq=1)。 – mark 2015-02-11 20:34:23