Вы можете использовать forkJoin , чтобы дождаться обоих, как только оба будут выполнены, а затем вы подпишитесь на него, как вы это обычно делаете с наблюдаемым.
Вот так
import { Component } from '@angular/core';
import { forkJoin, Observable } from 'rxjs'
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent {
name = 'Angular';
constructor(){
forkJoin([this.observableTest(2000), this.observableTest(3000)])
.subscribe(data => {
this.runMeAfter(data)
})
}
runMeAfter(data){
alert('yeahhh done with data, check your console for data')
console.log(data)
}
observableTest(delay){
return Observable.create(observer => {
setTimeout(() => {
observer.next("data to send can be object or anything");
console.log("am done");
observer.complete(); // to show we are done with our processing
}, delay);
})
}
}
runMeAfter
будет вызван, как только оба асинхронных кода будут выполнены с обработкой.
Демонстрация Stackblitz: https://stackblitz.com/edit/angular-forkjoin-theo