Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带有HTTP请求的Meteor方法不返回回调_Javascript_Meteor_Httprequest_Youtube Data Api - Fatal编程技术网

Javascript 带有HTTP请求的Meteor方法不返回回调

Javascript 带有HTTP请求的Meteor方法不返回回调,javascript,meteor,httprequest,youtube-data-api,Javascript,Meteor,Httprequest,Youtube Data Api,我正在尝试使用HTTP get请求创建Meteor方法。我正在返回一个结果,但无法在客户端获得回调以返回结果。回调需要等待HTTP请求返回结果,然后才能返回回调。我正在从HTTP请求成功地获取数据,所以这不是问题所在 有什么建议可以让它工作吗 Meteor.methods({ getYouTubeVideo: function (id) { check(id, String); var params = { part:'snippet, status, c

我正在尝试使用HTTP get请求创建Meteor方法。我正在返回一个结果,但无法在客户端获得回调以返回结果。回调需要等待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; 
    });
  }
});

您需要使用HTTP.get的同步版本,如下所示:

var result=HTTP.get('https://www.googleapis.com/youtube/v3/videos', {timeout:5000, params:params});
return result;
如果您像以前一样将异步版本与回调一起使用,那么您将面临一个常见问题,即必须尝试在回调中返回结果(这将不起作用),而不是在方法中返回结果,这是您应该做的

请注意,同步
HTTP.get
仅在服务器环境中可用,因此将方法声明放在
server/

下可能与之重复。一定要检查两个人的正确答案。