Nodejs - 来自 promise.then() 内部的 Return
Nodejs - Return from inside promise.then()
继续在 NodeJS 的新世界中发展,我正在尝试做一些看似平常但行不通的事情。
我有一个调用 HTTP/REST:
的服务包装器
getUserById(id: string, attributes: string | undefined, excludedAttributes: string | undefined): Promise<any>;
这是我称之为的地方:
async getUserById(@param.path.string('userId') userId: string): Promise<Usuario> {
console.log('1st call')
return await this.userService.getUserById(userId, undefined, undefined).then(result => {
var user: Usuario = {};
user.cpf = result?.username;
user.id = result?.id;
user.nome = result?.name?.formatted;
return user;
})
}
但它returns没什么。当然,响应时间有问题,我的意思是,功能在服务调用完成之前返回。
我做了类似的 ,但它调用了两个服务,等待两者然后 returns。相反,这种情况只调用一个服务,创建一个有效负载和 returns.
怎么了?提前致谢。
你可以不用 then
,正如@Phix 提到的:
async getUserById(@param.path.string('userId') userId: string): Promise<Usuario> {
const result = await this.userService.getUserById(userId, undefined, undefined);
var user: Usuario = {};
user.cpf = result?.username;
user.id = result?.id;
user.nome = result?.name?.formatted;
return user;
}
继续在 NodeJS 的新世界中发展,我正在尝试做一些看似平常但行不通的事情。
我有一个调用 HTTP/REST:
的服务包装器getUserById(id: string, attributes: string | undefined, excludedAttributes: string | undefined): Promise<any>;
这是我称之为的地方:
async getUserById(@param.path.string('userId') userId: string): Promise<Usuario> {
console.log('1st call')
return await this.userService.getUserById(userId, undefined, undefined).then(result => {
var user: Usuario = {};
user.cpf = result?.username;
user.id = result?.id;
user.nome = result?.name?.formatted;
return user;
})
}
但它returns没什么。当然,响应时间有问题,我的意思是,功能在服务调用完成之前返回。
我做了类似的
怎么了?提前致谢。
你可以不用 then
,正如@Phix 提到的:
async getUserById(@param.path.string('userId') userId: string): Promise<Usuario> {
const result = await this.userService.getUserById(userId, undefined, undefined);
var user: Usuario = {};
user.cpf = result?.username;
user.id = result?.id;
user.nome = result?.name?.formatted;
return user;
}