【发布时间】:2020-01-01 08:53:52
【问题描述】:
例如,我有以下功能:
public static async getUser(userId: number): Promise<UserModel> {
try {
const permissions: PermissionsModel[] = await this.getPermissions(userId);
const userWithRelation: UserModel[] = await this.findUsers(userId, permissions);
return Promise.resolve(userWithRelation);
} catch (e) {
return Promise.reject(e);
}
}
现在,WebStorm 警告我应该在 try 和 catch 块中将 await 放在 Promise.resolve() 之前。我对 Node 很陌生,所以我应该等待还是不等待,为什么?
注意:这只是示例函数,不是我不能公开展示的真实代码。
【问题讨论】:
-
你不应该把
await放在Promise.resolve之前,但你也不应该把Promise.resolve放在前面。由于您的函数是异步的,因此它将返回您通常返回的任何内容的承诺,因此您应该执行return userWithRelation;。请注意,这不是 node.js 的怪癖,它是 ES6 和 TypeScript 与异步函数一起工作的方式。 catch 部分也根本不需要,因为当异常发生时,返回的 promise 无论如何都会被拒绝
标签: node.js typescript