一个特定的职位呼叫被称为两次?

时间:2019-02-28 08:04:09

标签: javascript angular http

我有一个应用,在很多地方我们可以执行请求后的呼叫。

但是,在应用程序的某个位置,调用被执行两次:

我有服务

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)
    )
}

我只有一个日志。但是通话进行了两次?

1 个答案:

答案 0 :(得分:2)

您要对http请求进行两次可观察的访问,一次是在PostNewStory中,然后返回可观察的,然后在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;
    }),
  );
}