RxJS:Observable.create()与Observable.from()

Ond*_*žka 9 javascript observable rxjs rxjs5

这两者有什么区别?

return Observable.create(function(observer) {
    if (array)
        observer.next([]);
    else
        observer.next(null);
    observer.complete();
});
Run Code Online (Sandbox Code Playgroud)

return Observable.from( array ? [] : null );
Run Code Online (Sandbox Code Playgroud)

我认为它可能是相同的但不起作用.

pau*_*els 16

create(...)是一个Observable用于创建的通用工厂方法Observable,您将在其中明确指示如何将值传递给Subscriber

例如,如果你要创建一个计时器库Observable(不是它已经存在Observable.timer),你可以这样做:

   Observable.create(observer => {
     const timeoutId = setTimeout(() => {
       observer.next(0);
       observer.complete();
     }, 500);

     return () => clearTimeout(timeoutId);
   });
Run Code Online (Sandbox Code Playgroud)

from(...)是我所说的一致性操作,它试图强制数据类型传递到Observable(使其符合).这意味着它将接受各种类型并将其转换为Observables.这些类型包括:

  • 数组
  • 承诺
  • 发电机
  • 可观察到的东西

有一些特定的转换器,以及,你可以找到如fromArrayfromPromise其具体转换的类型,但from更多的那些方法瑞士军刀的

如果你只需要一个你应该使用的值Observable.of(文档似乎已经过时,在RxJS 5中just/return被重命名of,我认为它们不再是别名).

// Don't quote me on the import part
import 'rxjs/add/observable/of';

Observable.of(1, 2, 3, 4).subscribe();
Run Code Online (Sandbox Code Playgroud)