我一直在努力解决这个问题。有没有人在下面的 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/