有人可以解释一下为什么下面的代码片段会立即输出数字0到6吗?
Rx.Observable.interval(1/0).take(6).forEach(x => console.log(x));
输出:0 1 2 3 4 5
答案 0 :(得分:2)
您可以从the source code of RxJS看到Observable.interval
期望(并使用)其输入为整数:
module Rx {
export interface ObservableStatic {
/**
* Returns an observable sequence that produces a value after each period.
*
* @example
* 1 - res = Rx.Observable.interval(1000);
* 2 - res = Rx.Observable.interval(1000, Rx.Scheduler.timeout);
*
* @param {Number} period Period for producing the values in the resulting sequence (specified as an integer denoting milliseconds).
* @param {Scheduler} [scheduler] Scheduler to run the timer on. If not specified, Rx.Scheduler.timeout is used.
* @returns {Observable} An observable sequence that produces a value after each period.
*/
interval(period: number, scheduler?: IScheduler): Observable<number>;
}
}
以及Javascript中的
(1/0) === Infinity
当变成整数时,和Infinity
为零:
(Infinity | 0) === 0