我正在用普通的javascript编写一个应用程序。我遇到了一个问题,在将150个对象放入数组时,数组中的某些对象未定义。当我控制台.log对象之前将它们推入数组之前,它们很好,并且所有150个对象都显示出来。但是,当我将它们推送到阵列时,有些是未定义的,有些确实被成功推送。我的理解是,这可能是一个序列问题的时间问题,对于某些对象,它们可能尚未完全获取,但推送到数组已经发生。有没有办法确保它们被排序,以便数组仅在完全成功获取对象后才被推送?感谢您的帮助。
const fetchPokemon = function () {
const pokemons = [];
for ( let i=1; i <= 150; i++) {
const url = `https://pokeapi.co/api/v2/pokemon/${i}`;
fetch(url).then( res => { return res.json(); })
.then( data => {
const pokemon = {
name: data.name,
id: data.id
};
pokemons.push(pokemon);
console.log(pokemon);
console.log(pokemons[i]);
});
}
};
fetchPokemon();
输出 - 根据未定义的数组元素,页面的不同重新加载而变化
app.js:17 undefined
app.js:16 {name: "dragonite", id: 149}
app.js:17 undefined
app.js:16 {name: "mewtwo", id: 150}
app.js:17 undefined
app.js:16 {name: "kingler", id: 99}
app.js:17 {name: "electrode", id: 101}
app.js:16 {name: "aerodactyl", id: 142}
app.js:17 {name: "zapdos", id: 145}
app.js:16 {name: "dratini", id: 147}
app.js:17 {name: "kingler", id: 99}
慕尼黑8549860
海绵宝宝撒
相关分类