Oblesable.create((subscriber)=> {...})中的订户在角度2中的类型

Zor*_*hgo 2 rxjs typescript angular

我一直把头发拉出来.有没有人想出下面的Angular 2打字稿代码块中订阅者的类型?

let obs: Observable<string> = Observable.create((subscriber) => { ... }) 
Run Code Online (Sandbox Code Playgroud)

pau*_*els 8

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
Run Code Online (Sandbox Code Playgroud)

请注意,这实际上并不执行此代码,而是定义新订阅服务器通过调用obs.subscribe(subscriber) Or或函数进行订阅时将遵循的行为 : obs.subscribe((x) => console.log(x);

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