我目前正在评估替换Angular的优点的利弊。RxJS” Observable与普通的Promise,这样我可以使用async和await并获得更直观的代码风格。
我们的典型场景之一:在中加载一些数据ngOnInit。使用Observables,我们可以:
ngOnInit () {
this.service.getData().subscribe(data => {
this.data = this.modifyMyData(data);
});
}
Run Code Online (Sandbox Code Playgroud)
当我改为返回Promisefrom getData(),并使用async和时await,它变为:
async ngOnInit () {
const data = await this.service.getData();
this.data = this.modifyMyData(data);
}
Run Code Online (Sandbox Code Playgroud)
现在,很明显,Angular不会“知道”,而ngOnInit变成了async。我觉得这不是问题:我的应用仍然可以像以前一样工作。但是,当我查看OnInit接口时,显然并未以暗示可以声明该函数的方式声明该函数async:
ngOnInit(): void;
Run Code Online (Sandbox Code Playgroud)
所以-底线:我在这里做什么合理吗?还是会遇到任何无法预料的问题?