这两者有什么区别?
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();