Почему switchMap не требует наблюдаемого при возврате простого массива

Первоначально я искал, как вернуть несколько действий в эффекте ngrx, и обнаружил, что мне нужно вернуть массив действий.
Затем я заметил, что возврат простого массива в switchMap работает так же хорошо, как и возврат наблюдаемого, созданного из этого массива.
Например:

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));

Я ожидаю, что первое сработает, и думаю, что это правильный синтаксис.
Я не ожидаю, что второй сработает, но он действительно работает, и я хотел бы понять, почему.
Спасибо,


person Vash42    schedule 19.02.2021    source источник


Ответы (1)


Потому что switchMap, среди других операторов сглаживания (mergeMap, exhaustMap, ...), принимает ObservableLike в качестве возвращаемого типа своей функции проекции.

ObservableLike может быть Observable, Promise или Array. Если вы предоставляете массив, он преобразуется в поток его элементов - в основном так же, как если бы вы использовали from.

person ggradnig    schedule 19.02.2021