这两者有什么区别?
- return Observable.create(function(observer) {
- if (array)
- observer.next([]);
- else
- observer.next(null);
- observer.complete();
- });
和
- return Observable.from( array ? [] : null );
我认为它可能是相同的,但不起作用.
解决方法
create(…)是用于创建Observable的通用Observable工厂方法,您将在其中明确指示如何将值传递给订阅服务器
例如,如果你要创建一个基于Observable的计时器(不要它已经作为Observable.timer存在),你可以这样做:
- Observable.create(observer => {
- const timeoutId = setTimeout(() => {
- observer.next(0);
- observer.complete();
- },500);
- return () => clearTimeout(timeoutId);
- });
from(…)就是我所说的一致性运算符,因为它试图将传入的数据类型强制转换为Observable(使其符合).这意味着它将接受各种类型并将它们转换为Observable.这些类型包括:
>阵列
>承诺
>发电机
>可观察的东西
你也可以找到特定的转换器,例如fromArray和fromPromise,这些转换器专门转换这些类型,但更多的是来自这些方法的瑞士军刀
如果你只需要一个值,你应该使用Observable.of(文档似乎已经过时,只是/ return被重命名为RxJS 5,我认为它们不再是别名).
即
- // Don't quote me on the import part
- import 'rxjs/add/observable/of';
- Observable.of(1,2,3,4).subscribe();