等待 foreach 中的 observable
Waiting for observable inside a foreach
我有这个代码:
users() {
...
cookies.forEach(user=> {
this.save(user);
});
}
save(user) {
this.userName = user.split(';')[0];
this.userService.saveUser(this.userName).subscribe(() => {
...
});
});
}
问题是它遍历 forEach 与第一个用户及其用户名。然后,它应该执行 saveUser,但在执行它之前,它会再次遍历 forEach。所以用户已经改变了,它的用户名也改变了。所以,最后,我总是保存同一个用户。
有没有办法让 forEach 等待 saveUser?
非常感谢!
我假设订阅函数使用了一个承诺。
正如您在遍历数组并在每次迭代中执行承诺时所说的那样,迭代器不会等待承诺得到解决。
您可以像这样在 forEach 中汇总所有承诺:
users() {
...
let promises = []
cookies.forEach(user=> {
promises.push(this.save(user));
});
Promise.all(promises).then(results => {.......});
}
我有这个代码:
users() {
...
cookies.forEach(user=> {
this.save(user);
});
}
save(user) {
this.userName = user.split(';')[0];
this.userService.saveUser(this.userName).subscribe(() => {
...
});
});
}
问题是它遍历 forEach 与第一个用户及其用户名。然后,它应该执行 saveUser,但在执行它之前,它会再次遍历 forEach。所以用户已经改变了,它的用户名也改变了。所以,最后,我总是保存同一个用户。
有没有办法让 forEach 等待 saveUser?
非常感谢!
我假设订阅函数使用了一个承诺。 正如您在遍历数组并在每次迭代中执行承诺时所说的那样,迭代器不会等待承诺得到解决。
您可以像这样在 forEach 中汇总所有承诺:
users() {
...
let promises = []
cookies.forEach(user=> {
promises.push(this.save(user));
});
Promise.all(promises).then(results => {.......});
}