网站搜索

javascript - Angular 7 - 如何使用可观察对象链式调用 HTTP 请求


我想能够删除一个警报,但前提是这个警报没有分配给任何用户。为此,我需要获取我的用户列表,并检查是否没有用户被分配了这个警报。我通过将两个请求与可观察对象链接起来实现了这一点,但有没有更好的方法来实现呢?

deleteAlert(id: number) {
  this.usersService.getUsers().subscribe(
    (users) => {
      if (users.filter((value) => value.alert.id === id).length > 0) {
        console.log('Deassing alert to all user first');
      } else {
       this.alertService.deleteVillain(id)
        .subscribe(() => {
          this.alertsList =this.alertsList.filter(alerts=>alerts.id!==id);
        });
    }
  }
 )}

答案#1

你可以按照这个回答中提到的使用 flatMap 操作符。

deleteAlert(id: number) {
      this.usersService.getUsers().flatMap(
        (users) => {
          if (users.filter((value) => value.alert.id === id).length > 0) {
            console.log('Deassing alert to all user first');
          } else {
           return this.alertService.deleteVillain(id);
        }
      }).subscribe(data=>{
         this.alertsList = this.villainsList.filter(alerts=>alerts.id!==id);
      });
}