在 Angular JS 服务中调用 YouTube API 请求
Calling YouTube API request in Angular JS service
我在创建基于"搜索词"进行简单搜索的 Youtube 服务时遇到问题。我想做的是允许控制器调用我的YouTube服务(即searchVideo("dogs"))并获取一个视频ID,作为一个字符串,回来。
此时,我注意到在请求完成执行之前返回了请求视频 ID。由于不熟悉JS,我想要一个例子来说明如何让我的searchVideo()函数正确返回requestVideoId(在请求完成后)。
(function () {
'use strict';
var serviceId = 'youtubeService';
angular.module('app').factory(serviceId, ['common', youtubeService]);
function youtubeService(common) {
var service = {
searchVideo: searchVideo
};
return service;
function searchVideo(searchText) {
var requestVideoId = "";
var request = gapi.client.youtube.search.list({
q: searchText,
part: 'snippet'
});
request.execute(function(response) {
var responseList = response.result;
console.log(responseList.items[0].id.videoId);
requestVideoId = responseList.items[0].id.videoId;
});
console.log(requestVideoId);
return requestVideoId;
}
}
})();
我已经检查了这个问题...优酷异步函数...但我想保留搜索视频()函数。我可能错过了一些东西。提前谢谢。
searchVideo
应该返回一个将来解析的promise
。像这样:
function searchVideo(searchText) {
var defer=$q.defer();
var requestVideoId = "";
var request = gapi.client.youtube.search.list({
q: searchText,
part: 'snippet'
});
request.execute(function(response) {
var responseList = response.result;
console.log(responseList.items[0].id.videoId);
requestVideoId = responseList.items[0].id.videoId;
defer.resolve(requestVideoId);
});
console.log(requestVideoId);
return defer.promise;
}
现在您可以使用承诺 API 在解析承诺时注册回调:
youtubeService.searchVideo('test')
.then(function(requestVideoId) { // can access the id here});
了解什么是承诺以及承诺如何在 Angular 中发挥作用。
相关文章:
- internet explorer 8兼容模式下的Youtube api错误
- 如何修改此功能以获得最受欢迎的视频?(YouTube API v3)
- YouTube API v3哈希标签搜索错误结果
- Youtube API - 某些视频卡在未启动 (-1) 状态
- Youtube API,除声音控件外,不允许控件
- 无法找到在 YouTube API 中转义 json 中的引号的方法
- 噩梦与YouTube API和播放视频工作
- YouTube API-动态添加事件侦听器
- Codecademy代码在他们的网站上连接到Youtube API,但赢得了't在本地运行
- 检测YouTube API中的事件源
- YouTube API密钥安全-我应该有多担心
- Youtube API:查看当前正在播放哪个视频id
- youtube API播放视频、pauseVideo和stopVideo不工作
- 相关视频与部分内容详细信息和统计-Youtube API V3
- 我的搜索栏与YouTube API不同步
- 删除YouTube API标题标签开头的前24个字符
- Youtube API - 检索频道中的所有标签
- 暂停YouTube视频,youtube api
- Youtube API 未在 Firefox 中加载
- 阻止 YouTube API 在 PhoneGap Android 上全屏显示