Использование наблюдаемого.Может кто-нибудь объяснить мне, как работает этот код - PullRequest
0 голосов
/ 13 июня 2018
public SavePatientEducationDetails(patientEducation: any): Observable<any> {
  return new Observable<any>(obs => {
    this.http.post(environment.API.PATIENT_FAMILLY_EDUCATION + "?isNew=true", patientEducation).subscribe(res => {
      this.response = Object.assign(res);
      setTimeout(() => {
        obs.next(this.response);
        obs.complete();
      }, 500);
    }, err => {
      console.log(err);
    });
  })
}

1 Ответ

0 голосов
/ 26 июня 2018

Ну, это неправильная реализация использования наблюдаемой для начала.

В этом коде вы начинаете с создания новой наблюдаемой:

new Observable<any>(obs => {});

В этой наблюдаемой вы делаетеHTTP post запрос (возможно, для сохранения некоторых данных), и вы подписываетесь на него, чтобы получить значение его ответа:

new Observable<any>(obs => {
  this.http.post(environment.API.PATIENT_FAMILLY_EDUCATION + "?isNew=true", patientEducation).subscribe(res => {});
});

В подписке вы копируете значение ответа в новый объект с помощью this.response = Object.assign(res); Затем, наконец,через 500 мс (благодаря setTimeOut) вы отправляете ответ с помощью obs.next() и завершаете наблюдаемое с помощью (очевидно) метода obs.complete().Все, что делает этот код, - это просто добавление 500 мс к почтовому запросу, , который уже является наблюдаемым , поэтому перенос запроса в новую наблюдаемую информацию бесполезен.

Для меня вы получите точнотот же результат, сделанный так:

public SavePatientEducationDetails(patientEducation: any): Observable<any> {
  return this.http.post(environment.API.PATIENT_FAMILLY_EDUCATION + "?isNew=true", patientEducation);
}

Может быть, вы можете сказать, какова была первоначальная цель этого кода.

...