在 RxJS 5.x 中使用 from 创建 Observable 的最佳方式?

Best way to create Observable, using from, in RxJS 5.x?

现在我们有了 "lettable" 个运算符,我们应该如何从另一个运算符创建一个 Observable

当我尝试做的时候:

import {Observable} from 'rxjs/Observable'
const source = Observable.from(someOtherStream)

我收到错误 Observable.from is not a function,这是有道理的,因为 from 现在是其他需要单独导入的东西。

我不想做

import 'rxjs/add/observable/from' 由于那里的原型问题。

我最后做的是:

import { Observable } from 'rxjs/Observable'
import { from } from 'rxjs/observable/from'

const myNewStream = from.call(
  Observable,
  someOtherStream
)

但出于某种原因,这对我来说确实是 "hacky" 的感觉。有没有人有更好的方法来解决这个问题?

出租屋在后面 rxjs/operators here's the write up on it.

对于 from,您应该能够在不导入 Observable 的情况下导入它。

import { from } from 'rxjs/observable/from';

const prom = new Promise(res => setTimeout(
  () => res('promise'), 3000
));

from(prom).subscribe(x => console.log(x));

webpackbin example

以这种方式使用 from 可以让您 pipe() 成为可出租的运营商。

import { from } from 'rxjs/observable/from';
import { map } from 'rxjs/operators/map';

const prom = new Promise(res => setTimeout(
  () => res('promise'), 3000
));

from(prom).pipe(
  map(x => x.split('').reverse().join(''))
).subscribe(x => console.log(x));

webpackbin example

我认为这是对 from 的误解。它只是一个接受 "stream"(即 Observable、Promise、数组……)并从中创建一个 Observable 的函数。

这意味着您可以像使用任何其他函数一样使用它:

import { from } from 'rxjs/observable/from'

from(someOtherStream).pipe(...).subscribe(...)