如果我们有url的设置,如何使用$ http.get函数

时间:2016-07-22 07:23:08

标签: javascript http youtube

在我的情况下,我有14个YouTube数据网址,我需要通过使用$ http.get函数来获取响应... 但正在发生的事情是它需要第一个网址,但在得到响应之前它再次循环并采取另一个网址。在最后一个url之后,它开始执行url并获得响应。

代码是:

var _getCategoriesCat=function(){ 

   for(var i = 0; i < items.length; i++){

       var catId = parseInt(items[i].id);
       var title = items[i].snippet.title;

       if(showMore.showMoreValue) {
          var url ="https://www.googleapis.com/youtube/v3/search?part=snippet&maxResults=25&pageToken=10&regionCode=IN&type=video&videoCategoryId="+ catId +"&fields=items%2CnextPageToken%2CpageInfo%2CprevPageToken%2CregionCode&key=";
       } else {
          var url ="https://www.googleapis.com/youtube/v3/search?part=snippet&maxResults=6&pageToken=10&regionCode=IN&type=video&videoCategoryId="+ catId +"&fields=items%2CnextPageToken%2CpageInfo%2CprevPageToken%2CregionCode&key=";
       }
       xhr.get(url, function(response){
            response.name = title;
            response = [response];
            _mContents.push(PV.yoohu.model.arrayList(PV.yoohu.model.youtubeCategoryModel, response));
     })
  }
       _getLatest();
}

我有14个项目,如果我使用此代码第4个网址响应第1个,第1个网址响应更晚。我想逐一回答。 如果有人知道请帮助我。

1 个答案:

答案 0 :(得分:0)

将单个URL的提取移动到单独的函数中,并且应该在数组中的URL上采用独立位置。在完成一个url时,调用相同的索引递增。你可以尝试这个(代码未测试)

 function fetchInfo(i) {
   i = i || 0;
   var catId = parseInt(items[i].id);
   var title = items[i].snippet.title;

   if (showMore.showMoreValue) {
     var url = "https://www.googleapis.com/youtube/v3/search?part=snippet&maxResults=25&pageToken=10&regionCode=IN&type=video&videoCategoryId=" + catId + "&fields=items%2CnextPageToken%2CpageInfo%2CprevPageToken%2CregionCode&key=";
   } else {
     var url = "https://www.googleapis.com/youtube/v3/search?part=snippet&maxResults=6&pageToken=10&regionCode=IN&type=video&videoCategoryId=" + catId + "&fields=items%2CnextPageToken%2CpageInfo%2CprevPageToken%2CregionCode&key=";
   }

   xhr.get(url, function(response) {
     response.name = title;
     response = [response];
     _mContents.push(PV.yoohu.model.arrayList(PV.yoohu.model.youtubeCategoryModel, response));
     if (i < items.length) fetchInfo(i + 1);
   })
 }

 fetchInfo()