嗨,我正在使用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
的值。它现在返回我在开始时分配的值。
您可以通过使用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请求,更新计数器并在成功回调时返回其值。
如果有帮助请告诉我。
Get方法是异步的,你不能这样得到它,因为你的返回发生在你的Get请求结束之前。一种方法是对getVideoCount函数进行回调,并在GET请求结束时调用它。