您好我正在使用YouTube API获取视频统计信息,我正在向API发出GET请求,并且我也能够获得响应。此外,我需要返回在每个循环中分配的变量值。下面是代码,请告诉我如何在GET请求之外获取变量值。
function getVideoCount(videoId) {
var count = null;
$.get(
"https://www.googleapis.com/youtube/v3/videos",{
part: 'statistics',
id : videoId,
key : 'AIzaSyB8BFP0N1eRGGhSh4xYYyz43QTBSHhOdy4'},
function(data){
//console.log(data.items["statistics"]);
$.each(data.items, function(i , item){
count = item.statistics.viewCount;
})
//console.log(count);
}
//console.log(count)
);
console.log(count);
return count;
}
在这里,我需要返回count
的值。它现在返回我在开始时分配的值。
答案 0 :(得分:3)
您可以使用Javascript闭包来实现此功能。 我发现了一个类似的例子:http://www.w3schools.com/js/js_function_closures.asp你可以理解。
我在这里写了一些你可以看看的例子:
var count=(function(){
var counter=0;
return function (){
counter+=1;
return counter;
}
})();
function myFunction(){
document.getElementById("demo").innerHTML = count();
}
<p>Counting with a local variable.</p>
<button type="button" onclick="myFunction()">Count!</button>
<p id="demo">0</p>
计数器上的任何更新都会进入内部功能块。在你的情况下,你可以在该块中调用get请求,更新计数器并在成功回调时返回它的值。
如果有帮助,请告诉我。
答案 1 :(得分:0)
Get方法是异步的,你不能这样做,因为你的返回发生在GET请求结束之前。 一种方法是在getVideoCount函数上进行回调,并在GET请求结束后调用它。