有人可以帮助我理解为什么在循环中解析Promise只有在我访问循环变量时才有效吗?例如,这会记录5次:
for (let i = 0; i < 5; i++) {
this.getData()
.then(() => console.log("gotData " + i));
}
但这只记录一次:
for (let i = 0; i < 5; i++) {
this.getData()
.then(() => console.log("gotData"));
}
当getData()定义为:
时private getData(): Promise<void> {
return Promise.resolve();
}
在循环中处理promises的正确方法是什么?
答案 0 :(得分:1)
Matthias已经说过,浏览器的崩溃控制台输出是相同的,并显示计数指示器。代码表现完全相同。无论如何:
如果您想要按顺序解决Promise
,您必须执行以下操作:
[1,2,3,4,5].reduce(
(acc, i) => {
acc.then(() => console.log(i));
return acc;
},
Promise.resolve()
);
&#13;
如果排序无关紧要,您可以使用Promise.all
。如果您想了解有关该主题的更多信息,请搜索StackOverflow。有很多;)