为什么每个并行的promise都获得相同的值(res总是5异步不工作)?

时间:2018-04-28 15:23:16

标签: javascript promise

这启动了一个不同时间解决的承诺 那些是平行的,但反击的事实
异步时,它是一个最终值的参考 最后工作让我获得res(总是5)的相同值 任何解决方法吗?

//to test dynamics additions based on functions returning
//promises as iterators
var moitabla = document.body.appendChild(document.createElement("table"));
moitabla.setAttribute("id", "mit");
var moitexto = document.createTextNode("to add");
var mirow = document.createElement("tr");
var mitd = document.createElement("td");
mirow.appendChild(mitd);
mitd.appendChild(moitexto);
moitabla.appendChild(mirow);
//here it comes
function* gen() {
    let i = 0;
    for (/*let must be here  or do closure for it */i = 0; i < 5; i++) {
        yield(new Promise(function(resolve, reject) {
            window.setTimeout(function() {
                resolve(i);
            }, i * 1000);//end timeout
         }/*end function anonymous*/ 
        )//end new promise
       ); //end promise parse envelper
    }; //endfor
}; //end gen
var it = gen();
var bar;
while (!(bar = it.next()).done) {
    bar.value.then(function(res) {
        console.log("done!! " + res);
    });
    //always done!! 5 no individual value
};

0 个答案:

没有答案