Rxjs 为什么`of(未定义)发出,而`of()`不发出?
我在一些单元测试中发现了这一点。有人能解释为什么会这样吗?对我来说,它就像一只虫子 在这里,我的测试通过了,但它本不应该通过,因为可观察到的东西没有发射 将()的Rxjs 为什么`of(未定义)发出,而`of()`不发出?,rxjs,Rxjs,我在一些单元测试中发现了这一点。有人能解释为什么会这样吗?对我来说,它就像一只虫子 在这里,我的测试通过了,但它本不应该通过,因为可观察到的东西没有发射 将()的更改为(未定义)会导致测试正确失败 我希望()的和(未定义的)的是等价的。有人知道它们不存在的原因吗?这是因为of()方法的参数被定义为…args,因此它们被合并到一个数组中,从而传递一个空数组 (…args:Array)的导出函数:可观察{ 让scheduler=args[args.length-1]作为SchedulerLik
更改为(未定义)
会导致测试正确失败
我希望()的
和(未定义的)
的是等价的。有人知道它们不存在的原因吗?这是因为of()
方法的参数被定义为…args
,因此它们被合并到一个数组中,从而传递一个空数组
(…args:Array)的导出函数:可观察{
让scheduler=args[args.length-1]作为SchedulerLike;
if(isScheduler(调度器)){
args.pop();
返回scheduleArray(参数为T[],调度程序);
}否则{
从数组返回(参数为T[]);
}
}
of(undefined)
变为[undefined]
,此时发出undefined
of()
变为[]
,在这种情况下不会发出任何信号
作为一个bug,我认为它正在按照他们的意图工作:
@param{…T}值要发出的参数的逗号分隔列表
因此,我想说,如果你没有通过任何东西,就不应该发出任何东西。我毫不怀疑这是故意的。您可以调用()的
,
,却什么也没发生,这看起来真的很奇怪。如果您正在调用函数,那么您似乎期望发生一些事情。若并没有提供参数,那个么发出未定义的信息似乎很自然。虽然我可能只是希望可观察的工作更像承诺。“而且什么都没有发生”-of()
通常做3件事:1)创建可观察的2)发出提供的值3)完全可观察的。它仍在执行第1项和第3项。正如BizzyBox提到的,它做了一些事情。如果你不打电话,承诺永远不会产生价值。如果不调用,Observable.create将永远不会发出值。下一步。工作的重要性也是如此。如果函数未获取任何值作为param,则不会发出任何值。我认为这是一个非常可预测的api,空的有一种感觉:可观察的,完成时没有任何值发出。
export function of<T>(...args: Array<T | SchedulerLike>): Observable<T> {
let scheduler = args[args.length - 1] as SchedulerLike;
if (isScheduler(scheduler)) {
args.pop();
return scheduleArray(args as T[], scheduler);
} else {
return fromArray(args as T[]);
}
}