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);
});
})
}
答案 0 :(得分:1)
好吧,这是使用observable开头的错误实现。
在此代码中,您首先创建一个新的可观察对象:
new Observable<any>(obs => {});
在此可观察对象中,您发出一个http发布请求(可能保存一些数据),然后订阅该请求以获取其响应值:
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()
方法完成可观察的过程。
这些代码所做的只是在发布请求中添加500ms,已经是可观察的,因此将请求包装在新的可观察对象中是没有用的。
对我来说,这样做将获得完全相同的结果:
public SavePatientEducationDetails(patientEducation: any): Observable<any> {
return this.http.post(environment.API.PATIENT_FAMILLY_EDUCATION + "?isNew=true", patientEducation);
}
也许您可以说出这段代码的初衷是什么。