在返回

时间:2018-04-08 08:13:06

标签: javascript jquery promise

我遇到了一些问题,让我的代码按照我的意愿去做。

一旦外部“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)
   })

1 个答案:

答案 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被解析后才会被调用。