I want to implement something similar below(they are easy if using promises)
async doSomething(sID){
let student = await service.getStudent(sID);
let teacher = await service.getTeacher(student.TeacherID);
if(!teacher.Active){
return;
}
await service.teacherSomething(teacher);
await service.studentSomething(student);
}
I have no clue on how to do this if I am using observables instead of promises but this is the one I tried so far
doSomething(sID){
let student;
let teacher;
service.getStudent(sID).pipe(
switchMap(studentR=>{
student = studentR;
return service.getTeacher(student.TeacherID);
}),
switchMap(teacherR=>{
teacher = teacherR;
if(!teacher.Active){
return of(null);
}else{
return service.teacherSomething(teacher);
}
}),
swicthMap(teacherSomethingResponse=>{
if(teacherSomethingResponse==null){
return of(null);
}else{
return service.studentSomething(student);
}
})
}).subscribe();
}
as you can see, my rxjs version seems TOO LONG compared to the promise version and I feel like i am not doing it the right way.