为什么我的循环不起作用?这个循环在一开始就是全部。我在HamtaPokemon函数中得到json,我从z = 11得到。
console.log(z);
for( var z=1; z<11; z++){
console.log(z);
var pokeid=$("#pokeid").val();
HamtaPokemon(z).then((data)=>{
console.dir(data);
$("h1").text(data.name);
var pokId = "pokId" + z;
var pokName = "pokName" + z;
var pokImage = "pokImage" + z;
(pokId).toString() ;
(pokName).toString();
(pokImage).toString() ;
console.log(z);
//document.getElementById('pokId').innerHTML = data.id;
//document.getElementById('pokName').innerHTML = data.name;
//document.getElementById("pokImage").innerHTML= '<img src=http://img.pokemondb.net/artwork/'+data.name+'.jpg>';
$("h4").text(data.id);
});
}
答案 0 :(得分:0)
你需要编写一个链接承诺的效用函数。
例如
function asyncForEach(items, cb) {
return items.reduce((p,c) => {
return p.then(value => cb(c));
}, Promise.resolve());
}
var items = [1,2,3,4,5,6,7,8,9,10,11];
function HamtaPokemon(z) {
console.log(z);
return Promise.resolve(z);
}
function cb(z) {
return HamtaPokemon(z)
.then(data => { /* ... */});
}
asyncForEach(items, cb)
.then(result => console.log(result));
以上内容可以修改为同时运行它们。但我假设顺序处理。
您还需要阅读asynchronicity in JavaScript。