RxJs 6於2018年4月24日正式發佈,相對於RxJs 5,做出了大量的改動。
其中有很重要的一項:使用函數而不是類來操作可觀察對象(Observables)。所有的Observable類已被移除。
也就是說RxJs 6不能再繼續使用Observable.of()方法,應該使用函數of()。
同時鏈式操作被管道操作所替代:
.funName() 變爲:.pipe(funName())
最近在學習angular時,教程有一個使用舊版本的地方
inport {Observable} from "rxjs";
return Observable.of(valid ? null : {mobile : true}).delay(5000);
修改方法1:
官方給出開一個過渡方案,可以使最新版本兼容舊版本代碼:
npm install rxjs-compat
rxjs-compat提供了V5與v6API間的臨時兼容層,實質上rxjs-compat爲您的代碼庫提供了所需的v5版本功能
安裝rxjs-compat會導致打包後代碼包體積的增加,如果你使用的是4.0.0版本以下的Webpack,該影響會被放大。
因此建議升級完成後將rxjs-compat移除。
修改方法2:
使用函數替代:
import {of} from 'rxjs';
import {delay} from 'rxjs/operators';
return of(valid ? null : {mobile: true}).pipe(delay(5000));
注意導入也有所修改