ค้นหาเว็บไซต์

javascript - Angular 7 - วิธีเชื่อมโยงคำขอ HTTP ด้วย observables


ฉันต้องการที่จะสามารถลบการแจ้งเตือนได้ แต่เฉพาะเมื่อการแจ้งเตือนนี้ไม่ได้ถูกกำหนดให้กับผู้ใช้ สำหรับเรื่องนั้นฉันจำเป็นต้องดึงรายการผู้ใช้ของฉันและตรวจสอบว่าไม่มีผู้ใช้ใดที่ได้รับมอบหมายการแจ้งเตือนนี้ ฉันสามารถทำให้มันทำงานได้โดยการเชื่อมต่อคำขอสองคำสั่งด้วย observables แต่มีวิธีที่ดีกว่านี้ในการทำเรื่องนั้นหรือไม่?

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);
      });
}