Я хочу отправить два запроса GET в PARALLEL (это важно), чтобы получить user
и project
, а затем, когда у меня есть оба, я хочу отправить третий запрос, чтобы проверить, есть ли у меня доступ или нет, а затем загрузить здания и выполнить дальнейшую обработку - следующим образом
forkJoin([
this.myService.getProject(projectId), // gives observable
this.myService.getUser(userId), // gives observable
]).subscribe(async result => {
this.project =result[0];
this.user = result[1];
//AT THIS POINT I would like to have this.project/user=null if request fail
if(this.user && this.project) {
let access = this.myService.hasAccess(this.project, this.user).toPromise()
this.showAccess(access);
} else {
this.showWarning();
}
this.buildings = this.myService.getBuildings().toPromise();
if (this.user) { ... } // further processing
if (this.project) { ... } // further processing
});
Но есть следующая проблема: если запрос getProject
или getUser
завершится неудачно, будет выполнен код в разделе подписки новее (например, запрос getBuildings
будет новее) отправить) - я просто хочу ВСЕГДА выполнять код в этом теле подписки - в случае сбоя getProject я просто хочу иметь this.project = null (то же самое с пользователем).
Вопрос : Как это сделать?