试图弄清楚fetch(api)的方式,我遇到了这个问题。
API请求从frmo tmDB返回20个电影的数组。我的目标是从此数组中提取特定信息,并将新信息作为对象推送到数组,然后将其返回。
在此过程之后,当我console.log listOfMovieObjects数组时,我看到了完整的数组以及所需的一切。但是,我无法遍历它,因为listOfMovieObjects.length返回0,并且尝试记录listOfMovieObjects [0]返回未定义。
代码如下:
let listOfMovieObjects = [];
fetch(movieInformationRequest).then(function (response) {
return response.json();
}).then(function (response) {
// List of top 20 movies from tmdb
const listOfMovies = response.results;
// For each index in the array, create a movie object with the needed information
listOfMovies.forEach((movie) => {
const currentMovieInformation = {
image: `https://image.tmdb.org/t/p/w500/${movie.poster_path}`,
date: movie.release_date,
time: `${Math.floor(Math.random() * 14) + 10}:${Math.floor(Math.random() * 50) + 10}`,
title: movie.original_title,
description: movie.overview,
rating: movie.vote_average
}
// Push the object ot the listOfMovies array
listOfMovieObjects.push(currentMovieInformation);
})
});
// (In the chrome console) Shows an array of 20 movies object, with a length of 20
console.log(listOfMovieObjects);
// Returns 0
console.log(listOfMovieObjects.length);
// undefined
console.log(listOfMovieObjects[0]);
Chrome控制台中的屏幕截图: Screenshot
如果我要console.log在.then范围内完全相同,我将获得.length = 20和arr [0]作为我想要的对象,所以我想这是范围的问题(即使但是我不明白为什么,因为信息被推送到的数组不在范围之内。但是我想从函数中返回它。
编辑:这是api文档https://developers.themoviedb.org/3/movies/get-popular-movies