将 ECMAScript Observable / Zen Observable 转换为 RXJS Observable
Convert ECMAScript Observable / Zen Observable to RXJS Observable
我有一个spec-compliant ECMAScript Observable, specifically from the 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
修改反引号的答案,让它工作:
return new Observable((observer: any) => {
pipe(
fromArray([1, 2, 3]),
toObservable
).subscribe(observer);
});
利用订阅 API 相同这一事实编写一个转换函数:
const zenToRx = <T>(zenObservable: Zen.Observable<T>): Rx.Observable<T> =>
new Rx.Observable(
observer => zenObservable.subscribe(observer)
);
我有一个spec-compliant ECMAScript Observable, specifically from the 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
修改反引号的答案,让它工作:
return new Observable((observer: any) => {
pipe(
fromArray([1, 2, 3]),
toObservable
).subscribe(observer);
});
利用订阅 API 相同这一事实编写一个转换函数:
const zenToRx = <T>(zenObservable: Zen.Observable<T>): Rx.Observable<T> =>
new Rx.Observable(
observer => zenObservable.subscribe(observer)
);