У меня есть две функции, которые делают два HTTP-вызова и сохраняют данные, возвращаемые из запроса.Наряду с этим, он также отправляет ответ об успешном выполнении наблюдателю Субъекта, возвращенного из этой функции следующим образом.
import { Observable, of, Subject} from 'rxjs';
import { first } from 'rxjs/operators';
import { HttpClient, HttpRequest } from '@angular/common/http';
export class subjectServices : : Observable<any>{
dataone : any;
constructor(private http :HttpClient)
observableOne() : Observable<any>{
let subjectone = new Subject<any>();
let subjectOneObserver = subjectOne.asObservable();
this.http.get('url').subcribe(data=>{
this.dataone = data;
subjectTwo.next("Success");
})
return subjectOneObserver;
}
observableTwo() : Observable<any>{
let subjectTwo = new Subject<any>();
let subjectTwoObserver = subjectTwo.asObservable();
this.http.get('url').subcribe(data=>{
this.dataTwo = data;
subjectTwo.next("Success");
})
return subjectTwoObserver;
}
}
в моем компоненте я хочу вызвать обе эти функции одновременно и ждать их обоихчтобы ответить за это, я использовал ForkJoin вот так
import { forkJoin, Observable } from 'rxjs';
import {subjectServices} from './subjectServices.ts'
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
constructor(private SubjectServices : subjectServices){
}
callBothSubjectSimultaneously(){
let response1 = this.SubjectServices.observableOne();
let response2 = this.SubjectServices.observableTwo();
let allResponse = ForkJoin(response1, response2);
allResponse.subscribe(responseList =>{
let responseData1 = responseList[0];
let responseData2= responseList[1];
console.log("forkJoin completed")
});
}
}
, хотя обе функции выполняют оператор next () из службы, но код внутри allResponse.subscribe никогда не запускается.
Я знаюэто работало бы, если бы я передавал вызов http непосредственно в функцию ForkJoin, но почему-то это не работает, если наблюдаемое исходит от предмета, который я объявил.Я не понимаю, что я делаю неправильно.