观察者http实现是错误的?

时间:2019-03-01 00:52:52

标签: angular observable

我想要一个这样的系统->

  • 组件请求ngrxstore制作api并订阅以获取结果
  • 我的ngrxstore进行api调用并订阅以获取结果
  • 我的服务执行api调用并返回每个人都可以观察到的可观察对象

当前实施

Component =>

public CardMoved(){
     const params:load_item_params = {}

    let subscription = this._itemDetailsService.LoadItem(params).subscribe(data => {
            subscription.unsubscribe();
    });
}

NGRX商店=>

LoadItem(params:API_TYPE.load_item_params) : Observable<any> {
    let observable$ = this._http.Post(UtilsService.apiServer + '/load_item', params);
    return observable$.pipe(
        map((data) => {
            return data;
        }),
    )
}

HTTP服务=>

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

一切正常,我遇到的问题是,如果我在组件中未订阅偶数,则不会发送http调用。

我相信我仍然不太清楚可观察性和所有功能,而且我真的无法理解为什么如果我不订阅它就不会进行api调用

1 个答案:

答案 0 :(得分:0)

这是角度文档中有关Angular可观测对象的课程。

基本用法和条款

作为发布者,您将创建一个Observable实例,该实例定义了订阅者函数。当使用者调用subscribe()方法时,将执行此函数。订户功能定义了如何获取或生成要发布的值或消息。

要执行您创建的可观察对象并开始接收通知,请调用其subscribe()方法 ,并传递一个观察者。这是一个JavaScript对象,用于定义您收到的通知的处理程序。 subscription()调用返回一个具有unsubscribe()方法的Subscription对象,您可以调用该方法停止接收通知。

https://angular.io/guide/observables