具有HTTP请求的Meteor方法不返回回调
Meteor method with HTTP request does not return callback
我正在尝试创建一个带有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/
下
相关文章:
- 函数表达式,返回回调函数
- 如何“;等待”;以便返回回调
- jQuery,动画和动画返回.回调函数错误?:S
- 节点.js AMQP 不返回回调
- 返回回调函数 Node.js 的数据
- 承诺不返回回调数组
- 使用 jsonp 和 php 返回回调
- 订阅子作用域上的事件,并在broadcastemit中返回回调
- 为什么angular返回回调函数内部的函数
- Node.js:为什么要在错误处理期间返回回调的结果
- 如何构造代码以返回回调
- 具有HTTP请求的Meteor方法不返回回调
- 我如何返回回调MySQL查询和推到一个数组在Node.js
- 如何从使用node-oracledb的查询返回回调
- 直接调用回调或返回回调
- 设置变量返回回调监听器
- 泛型池函数返回回调的结果
- 回调中的AWS返回回调
- 我应该返回回调还是直接运行它
- 节点HTTPS请求没有在Lambda中返回回调函数