Rx.Observable.prototype.delay(dueTime, [scheduler])
, Rx.Observable.prototype.delay([subscriptionDelay], delayDurationSelector)
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:
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.[scheduler]
(Scheduler
): Scheduler to run the delay timers on. If not specified, the default scheduler is used.
For delays with a delay selector function:
[subscriptionDelay]
(Observable
): Sequence indicating the delay for the subscription to the source.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