3

我有一个符合规范的 ECMAScript Observable,特别是来自wonka library。我正在尝试将这种类型的可观察对象转换为 rxjs 6 可观察对象,但没有运气。

rxjs 5似乎可以做到这一点。我试过这个:

import { pipe, toObservable, fromArray } from 'wonka';
import { from } from 'rxjs';
...
from(
  pipe(
    fromArray([1, 2, 3]),
    toObservable
  )
);

我在浏览器中收到此错误:

ERROR TypeError: You provided an invalid object where a stream was expected. 
You can provide an Observable, Promise, Array, or Iterable.

然后这个:

Argument of type 'observableT<any>' is not assignable to parameter
of type 'ObservableInput<any>'

在“可视代码”对话框中。

我可以通过这样做将其转换为zen-observable :

npm i zen-observable
npm i --save-dev @types/zen-observable
import { from } from 'zen-observable';
...
getObservable(): Observable<any> {
  return from(
    pipe(
      fromArray([1, 2, 3]),
      toObservable
    ) as any) as any;
}

但是,zen-observable不是一回事,并且不允许我使用所有rxjs方法等......

如何将其转换为rxjs observable?

谢谢J

4

2 回答 2

5

编写一个利用订阅 API 相同这一事实的转换函数:

const zenToRx = <T>(zenObservable: Zen.Observable<T>): Rx.Observable<T> =>
  new Rx.Observable(
    observer => zenObservable.subscribe(observer)
  );
于 2021-03-01T03:07:40.537 回答
0

修改反引号的答案,让它工作:

return new Observable((observer: any) => {
  pipe(
    fromArray([1, 2, 3]),
    toObservable
  ).subscribe(observer);
});
于 2021-02-26T06:14:13.510 回答