将 ECMAScript Observable / Zen Observable 转换为 RXJS Observable

问题描述

我有一个 spec-compliant ECMAScript Observable,特别是来自 wonka library。我正在尝试将这种类型的 observable 转换为 rxjs 6 observable,但没有运气。

似乎这在 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,toObservable
    ) as any) as any;
}

然而,zen-observable 不是一回事,它不允许我使用所有的 rxjs 方法等等......

如何将其转换为 rxjs 可观察对象?

谢谢 J

解决方法

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

const zenToRx = <T>(zenObservable: Zen.Observable<T>): Rx.Observable<T> =>
  new Rx.Observable(
    observer => zenObservable.subscribe(observer)
  );
,

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

return new Observable((observer: any) => {
  pipe(
    fromArray([1,2,3]),toObservable
  ).subscribe(observer);
});