是否真的很容易创建具有可观察功能的ng服务?

时间:2018-02-09 18:24:03

标签: angular rxjs observable

以下网址似乎提供了通过ng服务实施REST的非常好的概述:

https://offering.solutions/blog/articles/2016/02/01/consuming-a-rest-api-with-angular-http-service-in-typescript

创建具有可观察功能的ng服务真的很容易吗?看起来您需要做的就是在服务顶部包含以下行:

import { Observable } from 'rxjs/Observable'; 

然后,类中的每个函数都自动成为一个可观察的函数。真的很容易吗?

1 个答案:

答案 0 :(得分:0)

从rxjs库导入Observable将导入由此模块导出的Observable绑定,使其在代码中"可用" 。换句话说,您将能够在此特定代码块中使用Observable。它不会神奇地将所有函数转换为Observable函数。让我举个例子。

import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import 'rxjs/observable/of';

@Injectable()
export class DummyService {

  constructor() { }

  regularFunction(): string[] {
    let data: string[];
    // Logic here
    return data;
  }
  // This function returns an array of strings

  observableFunction(): Observable<string[]> {
    let data: string[];
    // Logic here
    return Observable.of(data);
  }
  // This function returns an Observable array of strings

}

请注意,我也是从rxjs导入of。确保从rxjs库导入您使用的所有函数/属性/对象,否则在编译过程中会出现错误。

总而言之,导入一些不会改变它自己的东西的东西,只会让你的东西 可达/可用 代码。

在检查您发布的网址后,还有一点要指出的是,默认情况下,使用角度来自HttpClient的Http请求(post,get等)将始终返回Observable数据。

public getData<data>(): Observable<data> {
   return this.http.get<data>('https://www.example.com/data');
}

要使用该数据,您需要订阅该Observable。

this.dataService.getData().subscribe(data => {
  // Code Logic Here
});

我希望我帮助过你。干杯