首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >捕获从服务到组件的角度API响应

捕获从服务到组件的角度API响应
EN

Stack Overflow用户
提问于 2022-11-15 14:37:08
回答 2查看 40关注 0票数 0

在我的Range12应用程序中,我在服务文件中进行API调用,并希望在组件中捕获API的响应。但是由于API响应是异步的,下面的控制台总是返回未定义的。我也尝试过异步等待。以下是我尝试过的:

内部服务:

代码语言:javascript
运行
复制
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);
      }
    });
  }

内部组件:

代码语言:javascript
运行
复制
this.apiResponse = await this.myService.checkEmail(customerEmail);
 console.log("this.apiResponse", this.apiResponse)
EN

回答 2

Stack Overflow用户

发布于 2022-11-16 07:54:16

在组件中

代码语言:javascript
运行
复制
validateEmail = async () => {
    const params = {
      emailAddress: 'test@gmail.com',
    };
    const apiResponse: boolean = await this.emailService.validateEmail(params);
    console.log(`apiResponse===`, apiResponse);
  };

在役

代码语言:javascript
运行
复制
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);
    });
  };
}
票数 0
EN

Stack Overflow用户

发布于 2022-11-15 14:57:13

校验电子邮件方法什么也不做。如果您已经拥有了emailValidate,为什么要将它放在另一个方法中呢?只有一个emailValidate而不是checkEmail

代码语言:javascript
运行
复制
this.apiResponse = await this.myService.emailValidate({ email: customerEmail});
 console.log("this.apiResponse", this.apiResponse)

O在你的组成部分:

代码语言:javascript
运行
复制
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);
          }
        });
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74447404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档