【发布时间】:2021-12-13 22:54:54
【问题描述】:
我正在尝试一步一步地完成任务。
我在方法中有一个 for 循环:
async changeTimeStep3() {
for (let i = 1; i < 10; i++) {
await this.do(i)
}
}
对于每一步都必须做() 任务。
do(i) {
this.http
.getDataFromServer(
"api/example?id=" +i
)
.subscribe((response) => {
console.log(i);
});
}
我想等待得到回复,回复后转到下一个i
但console.log打印不起作用:
2
3
5
1
4
7
8
9
6
注意从 api 接收响应的时间不固定。
有什么帮助吗?
【问题讨论】:
-
do 没有返回等待的承诺...
-
为什么?以及如何以正确的方式做? @jonrsharpe
-
我不知道为什么它不返回一个承诺,你大概是这样写的,或者为什么你在等待它,即使它没有。如果您想等待它,请尝试实际返回一个承诺,该承诺会在工作完成时解决(或者如果失败则拒绝)。
-
我意识到这并不能回答你的问题,但是这样的调用是一种反模式。如果需要在循环中等待多个调用,则需要将集合传递给查询。
标签: javascript angular asynchronous async-await