Javascript for循环在开始时完成

时间:2017-06-15 16:23:02

标签: javascript

为什么我的循环不起作用?这个循环在一开始就是全部。我在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);


    });

}

enter image description here

1 个答案:

答案 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