在我的Range12应用程序中,我在服务文件中进行API调用,并希望在组件中捕获API的响应。但是由于API响应是异步的,下面的控制台总是返回未定义的。我也尝试过异步等待。以下是我尝试过的:
内部服务:
public checkEmail(emailToVerify: any) {
this.myService.emailValidate({ email: emailToVerify }).subscribe({
next: (data: { result: any) => {
console.log('updateEmail-res', data);
return data;
},
error: (err: any) => {
console.log('updateEmail-err', err);
}
});
}
内部组件:
this.apiResponse = await this.myService.checkEmail(customerEmail);
console.log("this.apiResponse", this.apiResponse)
发布于 2022-11-16 07:54:16
在组件中
validateEmail = async () => {
const params = {
emailAddress: 'test@gmail.com',
};
const apiResponse: boolean = await this.emailService.validateEmail(params);
console.log(`apiResponse===`, apiResponse);
};
在役
export class EmailService {
constructor() {}
validateEmail = async (params: {
emailAddress: string;
}): Promise<boolean> => {
return new Promise((resolve) => {
const isValid = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(
params.emailAddress
);
resolve(isValid);
});
};
}
发布于 2022-11-15 14:57:13
校验电子邮件方法什么也不做。如果您已经拥有了emailValidate,为什么要将它放在另一个方法中呢?只有一个emailValidate而不是checkEmail
this.apiResponse = await this.myService.emailValidate({ email: customerEmail});
console.log("this.apiResponse", this.apiResponse)
O在你的组成部分:
this.myService.emailValidate({ email: customerEmail}).subscribe({
next: (data: { result: any) => {
console.log('updateEmail-res', data);
this.apiResponse = data;
},
error: (err: any) => {
console.log('updateEmail-err', err);
}
});
https://stackoverflow.com/questions/74447404
复制相似问题