首页 > 解决方案 > 在角度服务调用中获取 ip 地址时出现异步执行问题

问题描述

我正在写一个日志服务,在日志服务中有几个日志信息。如果我获取 IP 地址,它将在一些延迟后获取 IP 地址,IP 地址在错误对象中未定义。因为

 logError(response: any): any {

      let errors:any;
      console.log(response, "log service error");
      this.getIP();

      error = {
        ExceptionMessage: response.message,
        ipaddress: this.getIP(),//  is undefined

        htmlDOM: document.getElementsByTagName("body")
        screenShot:another service call,
      }

      console.log(error, 'logged');
      return error;
 }

 getIP() {
   this.getIPAddress().subscribe((res: any) => {
      //getting ipaddress
      return res.ip;
   });
 }

 getIPAddress() {
   return this.httpClient.get("http://api.ipify.org/?format=json");
 }

 getScreen() {}

操作:目前它通过使用这个设置的超时解决方案来工作。更好的解决方案表示赞赏。

尝试使用 async 和 await 但它不起作用,

 logError(response: any): any {

       setTimeout(()=>{

          let errors:any;
          console.log(response, "log service error");
          this.getIP();
          error = {
            ExceptionMessage: response.message,
            ipaddress: this.getIP(),//  is undefined

            htmlDOM: document.getElementsByTagName("body")
            screenShot:another service call,
          }

          console.log(error, 'logged');
           return error;
         },7000);

         return error;
}

标签: angulartypescriptrxjsrxjs6rxjs-observables

解决方案


推荐阅读