我遇到了一些问题,让我的代码按照我的意愿去做。
一旦外部“getJSON”完成,我想从movieList数组循环遍历我新创建的所有对象。但我可以看到,当我遍历它时,数组是空的。
有没有让这个解决方案起作用?
var url = "https://api.themoviedb.org/3/movie/popular?api_key=2c2a6a5ed606126f48db4cdbca91c0f0&language=en-US&page=1";
var genreUrl = "https://api.themoviedb.org/3/genre/movie/list?api_key=2c2a6a5ed606126f48db4cdbca91c0f0&language=en-US";
$.getJSON(url).then(function(movies){
var movieList = [];
movies.results.forEach(function(movie){
/* Get the genere names for single movie */
$.getJSON(genreUrl).then(function(genresHolder){
var genreNames = [];
//Pushes some info to the array
return genreNames;
}).then(function(genres){
movieList.push(new Movie(movie.id,movie.original_title,genres,movie.poster_path,movie.vote_count,movie.vote_average,movie.release_date));
})
counter++;
})
return movieList;
}).then(function (movieList){
movieList.forEach(function(movie){
//Appending each movie to html page
})
}).catch(function(err){
console.log(err)
})
答案 0 :(得分:0)
嗯,没有更多关于getJSON正在做什么的规范,很难说。但是你的代码应该可行。但很可能你是在解析getJSON而不从url中返回结果。
在承诺中,您可以简单地[
{
"firstName":"santosh",
"lastName":"jadi",
"gender":"male",
"dob":"2018-03-31T18:30:00.000Z",
"qualification":"BE"
},
{
"firstName":"santosh",
"lastName":"jadi",
"gender":"male",
"dob":"2018-03-31T18:30:00.000Z",
"qualification":"BE"
}
]
或resolve()
在通话中传递的内容将转到resolve(value),
功能。
我看不到其他明显的错误,在此异步调用之后,只有在promise被解析后才会被调用。