Это мой код TS с использованием RxJS:
function getParam(val:any):Observable<any> {
return from(val).pipe(delay(1000))
}
of(1,2,3,4).pipe(
switchMap(val => getParam(val))
).subscribe(val => console.log(val));
Насколько я понимаю, функция getParam будет возвращать 'val', заключенный в наблюдаемую. Однако switchMap выдает следующую ошибку:
hostReportError.js:5 Uncaught TypeError: You provided '1' where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.
at subscribeTo (subscribeTo.js:39)
at Module.from (from.js:15)
at getParam (index.ts:6)
at SwitchMapSubscriber.eval [as project] (index.ts:8)
at SwitchMapSubscriber._next (switchMap.js:43)
at SwitchMapSubscriber.Subscriber.next (Subscriber.js:63)
at Observable.eval [as _subscribe] (subscribeToArray.js:7)
at Observable._trySubscribe (Observable.js:50)
at Observable.subscribe (Observable.js:36)
at SwitchMapOperator.call (switchMap.js:27)
Если я изменю код getParam на:
function getParam(val:any):Observable<any> {
return of(val).pipe(delay(1000))
}
Возвращает 4
как и ожидалось. Так почему же оператор from
не возвращает наблюдаемое в этом случае?
Редактировать: Это не дубликат RxJs Наблюдаемый vs от , потому что я не спрашиваю о входных аргументах для from
и of
. У меня вопрос как from
, так и of
, должны ли оба наблюдаемые, да? Но когда я использую from
, switchMap
жалуется, что он НЕ получает наблюдаемое, а просто получает '1' из массива. Надеюсь, что это проясняет.