【发布时间】:2015-05-14 14:48:02
【问题描述】:
我有这个(部分)我的网站,我需要从 TVDB/MovieDB API 获取数据。我需要一集的截图,所以我使用了
theMovieDb.tvEpisodes.getImages({
"id": showID,
"season_number": season_number,
"episode_number": episode_number
}, function(data){}, function(error){})
我需要执行 6 次,因为我需要包含 6 个不同情节的 6 张图像。
for(var i = 0; i < 7; i++){
}
但问题是,如果我现在在function(data){} 部分内询问console.log(i),它会记录6,六次...
我做错了什么?
这是完整的代码,包含来自其他函数等的变量...
for(var i = 0; i < 6; i++) {
iF = i;
u = i + 1
epLen = data.episodes[data.episodes.length - 1 - i]
var thies = "<center><span style='font-family: Arial'>" + epLen.season_number + 'x' + epLen.episode_number + ": <br>" + epLen.name + "<br>"+ epLen.air_date +"</span></center>";
var thisId = "recent" + u.toString();
var text = thies;
document.getElementById(thisId).innerHTML = text;
theMovieDb.tvEpisodes.getImages({"id": showID, "season_number": epLen.season_number, "episode_number": epLen.episode_number},
function(data){
var data = JSON.parse(data);
window.still = data.stills[0].file_path;
console.log(window.still);
console.log(iF); // logs 5
console.log(i); // logs 6
},
function(error){})
//alert(i)
//var still = window.still;
//console.log(still);
//var epStil = "https://image.tmdb.org/t/p/original" + still.stills[0].file_path;
//var epStill = "url(" + epStil + ")";
//document.getElementsByClassName("recent")[i].style.backgroundImage = epStill;
}
编辑
我找到了解决办法,由于被标记为重复,我不能再回答了,所以我将它贴在这里:
epStilArray = [];
for(var i = 0; i < 6; i++) {
iF = i;
u = i + 1
epLen = data.episodes[data.episodes.length - 1 - i]
var thies = "<center><span style='font-family: Arial'>" + epLen.season_number + 'x' + epLen.episode_number + ": <br>" + epLen.name + "<br>"+ epLen.air_date +"</span></center>";
var thisId = "recent" + u.toString();
var text = thies;
document.getElementById(thisId).innerHTML = text;
theMovieDb.tvEpisodes.getImages({"id": showID, "season_number": epLen.season_number, "episode_number": epLen.episode_number},
function(data){
var data = JSON.parse(data);
still = data.stills[0].file_path;
var epStil = "https://image.tmdb.org/t/p/original" + still;
var epStil = "url(" + epStil + ")";
epStilArray.push(epStil);
console.log(epStilArray);
document.getElementsByClassName("recent")[epStilArray.length - 1].style.backgroundImage = epStil;
},
function(error){})
}
【问题讨论】:
-
你能告诉我们你的实际
for循环吗? -
您的代码可能运行良好。
console.log()语句是异步执行的,所以在循环结束之前它不会第一次运行 -
@StephenThomas 但我的代码的其他部分需要
i,这也需要等待吗?
标签: javascript function api loops