在我的情况下,我有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®ionCode=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®ionCode=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个网址响应更晚。我想逐一回答。 如果有人知道请帮助我。
答案 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®ionCode=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®ionCode=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()