typescript - Angular 2 中 Observable.create((subscriber) => { ... }) 中的订阅者是什么类型

标签 typescript angular rxjs

我一直在努力解决这个问题。有没有人在下面的 Angular 2 typescript 代码块中弄清楚订阅者是什么类型?

let obs: Observable<string> = Observable.create((subscriber) => { ... }) 

最佳答案

Create是为了创建Observables具有自定义订阅行为。

传递给 Observable.create 的函数方法定义了订阅 Observable 时应该发生的行为。因此,subscriber传入的是一个实现 Observer<T> 的对象界面。

例如,以下代码将创建一个 Observable当订阅时,会发出两个值然后完成(对于任何语法错误提前道歉,我不使用 TypeScript):

let obs: Observable<string> = Observable.create((subscriber) => { 
  subscriber.next("Hello");
  subscriber.next("World!");
  subscriber.complete();
});

//Here is a subscriber that we define to subscribe to the Observable
let sub: Subscriber<string> = Subscriber.create(
              (x) => console.log(x),
              null,
              () => console.log("Done"));

//At this point the method you passed to Observable.create will be invoked
obs.subscribe(sub);

//Output:
//Hello 
//World!
//Done

请注意,这实际上并不执行此代码,而是定义当新订阅者通过调用订阅时将遵循的行为 obs.subscribe(subscriber) 或者有一个功能: obs.subscribe((x) => console.log(x);

在很多情况下使用create没有必要,因为大多数常见事件发射源都有包装器,所以你没有

关于typescript - Angular 2 中 Observable.create((subscriber) => { ... }) 中的订阅者是什么类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33771080/

相关文章:

angular - 我无法将我的类(class)设置为 Ionic2 上的 promise

angular - typescript /Angular/ES6 : can I finally let `hasOwnProperty()` die in for loops?

angular - 关闭前一个后,一个一个地打开几个mat-dialogs

javascript - 从可观察数组中获取属性值的总和

typescript - 安装@types/leaflet 后无法访问全局 L 命名空间

angular - 加载第二个组件导致 "The template specified for component SidebarComponent is not a string"

javascript - Angular 2选择具有初始值的复杂对象

Angular Material TimePicker ngx-material-timepicker 错误未捕获( promise ): TypeError: Object(. ..)不是函数

rxjs - 你如何从 RXJS Observable retryWhen 抛出错误

angular - 将参数附加到 Observable 中的嵌套数组