我有一个应用程序,有很多地方,我们执行post请求调用。
但是,在应用程序的一个地方,一个调用被执行了两次:
在我的服务中
PostNewStory(params:API_TYPE.post_new_item_history_call){
let observable$ = this._http.Get(UtilsService.apiServer + '/post_new_item_history', params)
let subscription = observable$.subscribe((data:any) =>{
//do stuff
subscription.unsubscribe();
});
return observable$;
}在我的组件中我有
PostComment(){
const params = {
//params
};
this._itemDetailsService.PostNewStory(params).subscribe((data:post_new_item_history_response) => {
this.ResetCommentArea();
});
}我有一个类似下面的HttpService
public Post<T>(url: string, payload: any): Observable<T>;
public Post<T>(url, payload): Observable<T> {
return this.http.post<T>(url, payload, httpHeaders)
.pipe(
retry(MAX_RETRY)
)
}这在任何地方都能完美地工作,我检查过,每个函数都被调用一次,而且只调用一次。如果我把日志放在这里,=>
public Post<T>(url: string, payload: any): Observable<T>;
public Post<T>(url, payload): Observable<T> {
console.log("MyLog")
return this.http.post<T>(url, payload, httpHeaders)
.pipe(
retry(MAX_RETRY)
)
}我确实只有一个日志。但是调用被做了两次?
发布于 2019-02-28 16:12:25
您订阅了两次http request observable,一次是在PostNewStory中,然后返回该observable,然后在PostComment中再次订阅它。
尝试如下所示:
PostNewStory(params:API_TYPE.post_new_item_history_call){
let observable$ = this._http.Get(UtilsService.apiServer + '/post_new_item_history', params)
return observable$.pipe(
map((data: any) => {
// do stuff
return dataNeededInPostCommentMethod;
}),
);
}https://stackoverflow.com/questions/54920964
复制相似问题