Rxjs - Operators - Defer

Sample

var a = 6;

var clicksOrInterval = Rx.Observable.defer(function () {
if (a > 0.5) {
return Rx.Observable.fromEvent(document, 'click');
} else {
return Rx.Observable.interval(1000);
}
});
clicksOrInterval.subscribe(x => console.log(x));

a = 0.1;
clicksOrInterval.subscribe(x => console.log("2", x));

解释

Creates the Observable lazily, that is, only when it is subscribed.

当有人subscribe的时候才会去执行defer里面.
目的就是要动态的生成一个流

使用条件:
这个defer生成的流可以是多个不同的流, 但是要求他后面的操作是一样的代码

如果你遇到多个流,他们有除了源不同,下面的操作都一样,就可以用这个

貌似比较适合 switch when那种语法情况