Конкретный почтовый звонок называется дважды? - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть приложение, и во многих местах мы выполняем вызов по запросу.

Но в одном месте приложения вызов выполняется дважды:

в моем сервисеУ меня есть

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 голосов
/ 28 февраля 2019

Вы подписываетесь на 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;
    }),
  );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...