2014-09-05 66 views
3

我想創建一個HTTP請求的流星方法。我回來了一個結果,但我不能讓我的回調在客戶端返回結果。回調需要等待HTTP請求返回結果才能返回回調。我從HTTP請求中成功獲取數據,所以這不是問題。流星方法與HTTP請求不返回回調

有關如何使這項工作的任何建議?

Meteor.methods({ 
    getYouTubeVideo: function (id) { 
    check(id, String); 

    var params = { 
     part:'snippet, status, contentDetails', 
     id:id, 
     key:Meteor.settings.youtube.apiKey 
    }; 

    HTTP.get('https://www.googleapis.com/youtube/v3/videos', {timeout:5000, params:params}, function(error, result){ 
     if (error) { 
     throw new Meteor.Error(404, "Error: " + error); 
     return; 
     } 
     console.log(result); 
     return result; 
    }); 
    } 
}); 
+0

您的方法聲明可能是http://stackoverflow.com/questions/25674736/return-meteor-http-的副本儘管結果在方法。一定要在那裏檢查兩個人的正確答案。 – saimeunt 2014-09-05 19:55:47

回答

4

您需要使用的HTTP.get同步版本,就像這樣:

var result=HTTP.get('https://www.googleapis.com/youtube/v3/videos', {timeout:5000, params:params}); 
return result; 

如果使用異步版本的回調像你這樣,你面對具有的通病嘗試在回調中返回結果(這不起作用),而不是在方法中,這是你應該做的。

需要注意的是同步的HTTP.get僅在服務器環境中可用,所以把下server/