Abh*_*Ray 3 javascript youtube youtube-api youtube-javascript-api youtube-data-api
我正在尝试使用youtube api for javascript并且我得到'gapi.client.youtube is undefined'.
我已经浏览了链接:为什么来自Youtube Data Api V3的'gapi.client.youtube'未定义?,但无法得到很多帮助.
我的代码放在下面:
<script>
function load(){
gapi.client.setApiKey('AIzaSyARvwirFktEIi_BTaKcCi9Ja-m3IEJYIRk');
gapi.client.load('youtube', 'v3');
searchA();
//alert(gapi.client.youtube.channels);
}
function searchA() {
var q = 'pink floyd';
var request = gapi.client.youtube.channels.list({
part: 'statistics',
forUsername : 'GameSprout'
});
request.execute(function(response) {
var str = JSON.stringify(response.result);
alert(str);
});
Run Code Online (Sandbox Code Playgroud)
}
<script src="https://apis.google.com/js/client.js?onload=load">
Run Code Online (Sandbox Code Playgroud)
但它没有得到gapi.client.youtube.
谁能帮助我解决他的问题?
jlm*_*ald 12
问题是该gapi.client.load
方法需要一些时间才能完成,并且它是异步的,因此您的页面(您已设置为同步)将在searchA()
youtube库完全加载之前继续运行该方法.有两种方法可以解决这个问题.一种是使用load方法的回调参数,如下所示:
<html>
<body>
<script>
function googleApiClientReady(){
gapi.client.setApiKey('AIzaSyARvwirFktEIi_BTaKcCi9Ja-m3IEJYIRk');
gapi.client.load('youtube', 'v3', function() {
searchA();
});
}
function searchA() {
var q = 'pink floyd';
var request = gapi.client.youtube.channels.list({
part: 'statistics',
forUsername : 'GameSprout'
});
request.execute(function(response) {
var str = JSON.stringify(response.result);
alert(str);
});
}
</script>
Run Code Online (Sandbox Code Playgroud)
如果您愿意,还可以在加载回调周围包装一个承诺:
<html>
<body>
<script>
googleApiClientReady=function() {
loadApi() = function() {
return new Promise(function(resolve,reject){
gapi.client.setApiKey('AIzaSyARvwirFktEIi_BTaKcCi9Ja-m3IEJYIRk');
gapi.client.load('youtube', 'v3', resolve);
});
};
loadApi().then(function() {
var q = 'pink floyd';
var request = gapi.client.youtube.channels.list({
part: 'statistics',
forUsername : 'GameSprout'
});
request.execute(function(response) {
var str = JSON.stringify(response.result);
alert(str);
});
});
};
</script>
<script src="https://apis.google.com/js/client.js?onload=googleApiClientReady"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6283 次 |
最近记录: |