Rx.Observable.prototype.delay(dueTime, [scheduler]), Rx.Observable.prototype.delay([subscriptionDelay], delayDurationSelector)

delay

Time shifts the observable sequence by dueTime. The relative time intervals between the values are preserved.

--OR--

Time shifts the observable sequence based on a subscription delay and a delay selector function for each element.

参数

For delays with an absolute or relative time:

  1. dueTime (Date | Number): Absolute (specified as a Date object) or relative time (specified as an integer denoting milliseconds) by which to shift the observable sequence.
  2. [scheduler] (Scheduler): Scheduler to run the delay timers on. If not specified, the default scheduler is used.

For delays with a delay selector function:

  1. [subscriptionDelay] (Observable): Sequence indicating the delay for the subscription to the source.
  2. delayDurationSelector (Function): Selector function to retrieve a sequence indicating the delay for each given element.

返回值

(Observable): Time-shifted sequence.

Using an absolute time to delay by a second

Using an relatove time to delay by a second

/* With subscriptionDelay */
var source = Rx.Observable
  .range(0, 3)
  .delay(
    Rx.Observable.timer(300),
    function (x) { return Rx.Observable.timer(x * 400); }
  )
  .timeInterval()
  .map(function (x) { return x.value + ':' + x.interval; });

var subscription = source.subscribe(
  function (x) {
    console.log('Next: %s', x);
  },
  function (err) {
    console.log('Error: %s', err);
  },
  function () {
    console.log('Completed');
  });


// => Next: 0:300
// => Next: 1:400
// => Next: 2:400
// => Completed
/* Without subscriptionDelay */
var source = Rx.Observable
  .range(0, 3)
  .delay(function (x) { return Rx.Observable.timer(x * 400); })
  .timeInterval()
  .map(function (x) { return x.value + ':' + x.interval; });

var subscription = source.subscribe(
  function (x) {
    console.log('Next: %s', x);
  },
  function (err) {
    console.log('Error: %s', err);
  },
  function () {
    console.log('Completed');
  });

// => Next: 0:0
// => Next: 1:400
// => Next: 2:400
// => Completed