defer

  • 语法:
public static defer(observableFactory: function(): Observable | Promise): Observable

以惰性的方式产生一个Observable,也就是说,当被订阅的时候才会产生。

  • 功能: 参数为一个Observable工厂函数,当被订阅时工厂函数被调用产生一个可观察对象。

defer允许您仅在Observer订阅时创建Observable,并为每个Observer创建一个新的Observable。 它等待一个Observer订阅它,然后它生成一个Observable,通常有一个Observable工厂函数。 它为每个用户分别产生一个Observable,所以虽然每个用户可能认为它们是订阅的同一个Observable,事实上每个订阅者都有自己的单独的Observable。

eg:

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

f-eg:

/* Using an observable sequence */
var source = Rx.Observable.defer(() => Rx.Observable.return(42));

var subscription = source.subscribe(
  x => console.log(`onNext: ${x}`),
  e => console.log(`onError: ${e}`),
  () => console.log('onCompleted'));

// => onNext: 42
// => onCompleted
/* Using a promise */
var source = Rx.Observable.defer(() => RSVP.Promise.resolve(42));

var subscription = source.subscribe(
  x => console.log(`onNext: ${x}`),
  e => console.log(`onError: ${e}`),
  () => console.log('onCompleted'));

// => onNext: 42
// => onCompleted

results matching ""

    No results matching ""