【问题标题】:Observer http implemetation is wrong?观察者 http 实现是错误的?
【发布时间】:2019-07-23 00:05:28
【问题描述】:

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

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

这里是当前的实现

组件 =>

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 调用。

我相信我仍然没有完全理解 observable 和所有的工作原理,而且我真的不明白为什么如果我不订阅它就不会进行 api 调用

【问题讨论】:

    标签: angular observable


    【解决方案1】:

    这是 Angular 文档中关于 Angular 可观察对象的一课。

    基本用法和条款

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

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

    https://angular.io/guide/observables

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-11
      • 2017-08-30
      • 1970-01-01
      相关资源
      最近更新 更多