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