如何获取GET请求中函数中使用的变量的值?

时间:2015-07-24 15:12:15

标签: jquery get youtube-api

您好我正在使用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的值。它现在返回我在开始时分配的值。

2 个答案:

答案 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请求结束后调用它。