【发布时间】:2015-11-29 13:36:02
【问题描述】:
我想通过我的承诺更新 DOM。我构建了一系列 Promise 并使用 Promise.all 运行它们:
function test(i){
return Promise.resolve()
.then(function() {
// update the DOM
document.getElementById('progress').innerHTML += i;
return i;
});
}
var loadSequence = [];
// loop through all the frames!
for (var i = 0; i < 9999; i++) {
loadSequence.push(test(i));
}
Promise.all(loadSequence)
.then(function(){
window.console.log('all set...');
});
http://codepen.io/nicolasrannou/pen/jbEVwr
我无法实时更新 DOM。 只有在我的所有承诺都解决后,它才会更新 DOM。
这是预期的行为吗?如果是这样,我如何利用 Promise.all 实时更新我的 DOM?
我想使用 promises 而不是“setTimeout(function, 1000)” hack,但我找不到好方法。
【问题讨论】:
-
我看不出你认为什么是“实时”的?
-
Promise 不是由
Promise.all“运行”的,它们只是在等待 - 自您创建它们以来它们已经在运行。 -
Promise.all等待来自异步函数的一组承诺,这些函数通常并行启动,而不是按顺序启动。
标签: javascript dom asynchronous es6-promise