等待 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 => {.......});
}