有人可以在我的代碼明白爲什麼變量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