我做什么都回不来。这是我的函数(nestjs)
async registerUser(body: UserInterface): Promise<string>
我什么都试过了,都没用。我读到过回调可能会有帮助,但是即使使用回调我也无法返回。
await this.startRegistration(userBuilder, (result) => {
console.log(result);
return result;
});
控制台日志正常工作,但函数不返回。当我尝试将结果赋值时,
let testResult: any;
await this.startRegistration(userBuilder, (result) => {
console.log(result);
testResult = result;
return result;
});
return testResult;
它只是返回未定义的。。。
我的开始注册功能:
async startRegistration(userBuilder: UserInterface, callback: (result: string) => void)
我尝试用这种方式调用回调:
callback(JSON.stringify({error: "SUCCESS", errorCode: 10}));
await this.startRegistration(userBuilder, (result) => {
console.log(result);
return result;
});
等待
只对承诺有效。看起来startRegistration没有使用承诺,所以您必须将其封装在一个中。
const promise = new Promise<string>((resolve, reject) => {
this.startRegistration(userBuilder, (result) => {
console.log(result);
resolve(result);
});
})
const testResult = await promise;
或更短:
const testResult = await new Promise<string>((resolve) => {
this.startRegistration(userBuilder, resolve);
});
let testResult: any;
testResult = this.startRegistration(userBuilder, (result) => {
console.log(result);
return result;
});
return testResult;
和startRegistration()
startRegistration(userBuilder: UserInterface, callback: (result: string) => string) {
//operations
return callback()
}
在返回承诺之前,不需要使用async
。我猜这会让你开始。
如果你要兑现承诺,
在async
函数中设置await
是必要的
async someFunction() {
let testResult: any;
testResult = await this.startRegistration(userBuilder, (result) => {
console.log(result);
return result;
});
return testResult;
}