为什么 switchMap 在返回一个简单数组时不需要可观察对象
Why switchMap does not require an observable when returning an simple array
我最初是在搜索如何在 ngrx 效果中 return 几个动作,发现我需要 return 一组动作。
然后我注意到在 switchMap 中 returning 一个简单的数组与 returning 一个从该数组创建的可观察对象一样好。
例如:
timer(1000).pipe(switchMap(val => from([val, val + 1)])).subscribe(val => console.log(val));
timer(1000).pipe(switchMap(val => [val, val + 1])).subscribe(val => console.log(val));
我希望第一个能够工作并且认为它是正确的语法。
我不希望第二个起作用,但它确实起作用,我想了解原因。
谢谢,
因为 switchMap
以及其他扁平化运算符(mergeMap
、exhaustMap
、...)将 ObservableLike
作为 return 类型它的投影功能。
ObservableLike
可以是 Observable
、Promise
或 Array
。如果你提供一个数组,它会被转换成它的项目流——基本上和你使用 from
.
一样
我最初是在搜索如何在 ngrx 效果中 return 几个动作,发现我需要 return 一组动作。
然后我注意到在 switchMap 中 returning 一个简单的数组与 returning 一个从该数组创建的可观察对象一样好。
例如:
timer(1000).pipe(switchMap(val => from([val, val + 1)])).subscribe(val => console.log(val));
timer(1000).pipe(switchMap(val => [val, val + 1])).subscribe(val => console.log(val));
我希望第一个能够工作并且认为它是正确的语法。
我不希望第二个起作用,但它确实起作用,我想了解原因。
谢谢,
因为 switchMap
以及其他扁平化运算符(mergeMap
、exhaustMap
、...)将 ObservableLike
作为 return 类型它的投影功能。
ObservableLike
可以是 Observable
、Promise
或 Array
。如果你提供一个数组,它会被转换成它的项目流——基本上和你使用 from
.