【发布时间】:2019-10-24 01:33:40
【问题描述】:
我一直无法理解异步函数的概念以及如何正确实现它们。
在 Angular 应用程序中,我在服务中有以下功能可以正确解析,但我对这个实现是否错误感到困惑,如果没有,是否有更好的方法将它们一起编写。
函数,为清楚起见简化:
async doSomething(param:string): Promise<any> {
this.activeParam = param;
return this.doSomethingElse(param).then((response)=> {
return Promise.resolve(response);
}).catch((error) =>{
return Promise.reject(error);
});
}
我在我的组件中调用该函数如下:
this.service.doSomething('setting').then((result) =>{
console.log('success:', result);
},(error)=>{
console.log('error:', result);
});
更新
在发布这个问题之前我应该休息一下,因为它从一开始就有缺陷。
所以我想添加一个更新以避免让遇到类似问题的其他人感到困惑并因此到达这里。
首先感谢@MicheleLambertucci 花时间澄清并提供可靠的答案。
其次,我想分享以下链接,IMO 以非常简单的方式解释了异步函数。
【问题讨论】:
-
编写一个没有 await 的异步函数是没有意义的,在 no-op then 或在 doSomething 中的 catch 中也没有任何意义。另请注意,Angular 中的规范异步抽象是 observables,而不是 Promise。
-
“因为我在这里结束了 14 小时的编码弯曲” 我想你应该休息一下,这不健康。
-
没错...只是完全筋疲力尽。
标签: typescript function asynchronous promise