gpt4 book ai didi

javascript - gapi.client.youtube 未定义?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:59:11 25 4
gpt4 key购买 nike

我正在尝试将 youtube api 用于 javascript,但收到“gapi.client.youtube is undefined”。

我已经浏览了链接:Why is 'gapi.client.youtube' from Youtube Data Api V3 undefined? , 但无法获得太多帮助。

我的代码放在下面:

    <script>
function load(){
gapi.client.setApiKey('API_KEY');
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);
});

<script src="https://apis.google.com/js/client.js?onload=load">    

但它没有获取 gapi.client.youtube。

谁能帮我解决他的问题?

最佳答案

问题是 gapi.client.load 方法需要一点时间才能完成,而且它是异步的,因此您的页面(您已设置为同步)正在运行在完全加载 youtube 库之前打开并运行 searchA() 方法。有两种解决方法。一种是使用 load 方法的回调参数,如下所示:

<html>
<body>
<script>
function googleApiClientReady(){
gapi.client.setApiKey('API_KEY');
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>
</body>
</html>

如果您愿意,您还可以在加载回调周围包装一个 promise:

<html>
<body>
<script>
googleApiClientReady=function() {
loadApi() = function() {
return new Promise(function(resolve,reject){
gapi.client.setApiKey('API_KEY');
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>

关于javascript - gapi.client.youtube 未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24586072/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com