首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个特定的post调用被调用两次?

一个特定的post调用被调用两次?
EN

Stack Overflow用户
提问于 2019-02-28 16:04:09
回答 1查看 97关注 0票数 0

我有一个应用程序,有很多地方,我们执行post请求调用。

但是,在应用程序的一个地方,一个调用被执行了两次:

在我的服务中

代码语言:javascript
复制
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$;
}

在我的组件中我有

代码语言:javascript
复制
PostComment(){
    const params = {
       //params
    };

    this._itemDetailsService.PostNewStory(params).subscribe((data:post_new_item_history_response) => {
        this.ResetCommentArea();
    });
}

我有一个类似下面的HttpService

代码语言:javascript
复制
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)
    )
}

这在任何地方都能完美地工作,我检查过,每个函数都被调用一次,而且只调用一次。如果我把日志放在这里,=>

代码语言:javascript
复制
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)
    )
}

我确实只有一个日志。但是调用被做了两次?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-28 16:12:25

您订阅了两次http request observable,一次是在PostNewStory中,然后返回该observable,然后在PostComment中再次订阅它。

尝试如下所示:

代码语言:javascript
复制
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;
    }),
  );
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54920964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档