最佳答案
我正在评估取代 Angular 的代理人的优缺点。RxJS 的 Observable
与简单的 Promise
,使我可以使用 async
和 await
,并得到一个更直观的代码样式。
我们的典型场景之一: 在 ngOnInit
中加载一些数据:
ngOnInit () {
this.service.getData().subscribe(data => {
this.data = this.modifyMyData(data);
});
}
当我从 getData()
返回一个 Promise
,并使用 async
和 await
时,它变成:
async ngOnInit () {
const data = await this.service.getData();
this.data = this.modifyMyData(data);
}
现在,很明显,Angular 不会“知道”ngOnInit
已经变成了 async
。我觉得这不是问题: 我的应用程序仍然像以前一样工作。但是当我查看 OnInit
接口时,函数的声明方式显然不是这样的,这表明它可以被声明为 async
:
ngOnInit(): void;
所以——底线: 我在这里做的合理吗? 或者我会遇到任何不可预见的问题?