ForkJoin не может форкать наблюдаемые из нескольких объявленных тем - PullRequest
0 голосов
/ 16 мая 2019

У меня есть две функции, которые делают два 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, но почему-то это не работает, если наблюдаемое исходит от предмета, который я объявил.Я не понимаю, что я делаю неправильно.

...