【问题标题】:Cannot get value from async function无法从异步函数中获取值
【发布时间】:2019-07-08 08:49:19
【问题描述】:

我正在尝试在ngOnInit 上获取async 函数的结果。

.ts 文件中,我添加了这个函数:

async load()
{ 
    this.picaes = await this.userService.getAffectedExpertisesPromiseSE(25);
    console.log("-Inside load--------------" + this.picaes);
    return this.picaes;
}

ngOnInit 上,我称之为 async 函数:

console.log("-Outside load--------------" + this.load());

service.user.ts 文件中,我进行了以下调用:

async getAffectedExpertisesPromiseSE(id: number): Promise<any>
{
    var url= `${this.baseUrl}/users/expertisesObj/${id}`;
    var result= await (await fetch(url)).text();
    return result;
}

产生:

-外部加载--------------[object Promise]

-内部加载--------------[{"id":1,"name":"Angular","selected":true},{"id":2, "name":"SpringBoot","selected":true},{"id":3,"name":"Primefaces","selected":true}]

所以我的问题是我无法在控制台外部加载上得到结果。

你能告诉我我错过了什么吗? 非常感谢。

【问题讨论】:

  • const v = await this.load(); console.log(v);
  • 您好@Reactgular 先生,感谢您的回复。我得到 'await' 表达式只允许在 sublime 上的异步函数中使用

标签: angular angular6


【解决方案1】:

异步函数返回一个承诺,而不是您的预期输出。因此,您将不会获得 this.load() 上的值。而是将您的代码更改为:

this.load().then((data) => {
   console.log('Outside load--------------' +data);
})

【讨论】:

  • 您好@Indragith 先生,非常感谢您的回复。但是,我知道。但我想在 then 之外得到结果。请问您有解决这个问题的任何想法吗?非常感谢先生。
  • 初始化组件中的一些变量。然后,您可以将数据分配给该变量。
  • 否则,您可以将该加载函数移到 ngOnInit 之外,并声明一个新的异步函数来加载数据,这将消除错误''await' expression is only allowed within async function'
  • 是的 @Indragith 先生,这就是我所做的,async load() 在我的问题中提出的 ngOnInit 之外。
  • 我试过let list: Expertise[] = []; this.load().then((data) =&gt; { list = data; console.log('IN load --------------' + data); }) console.log("-OUT load --------------" + list);,但我在OUT上什么都没有
【解决方案2】:

为什么不尝试使用XMLHttpRequest 而不是async

var request = new XMLHttpRequest();
request.open('GET', 'http://localhost:6227/api/auth/users', false);  
request.send(null);

您可以使用this thread,这可以帮助您保持同步通话。

HTH。

【讨论】:

  • 是的,这种方式给了我正确的回应。非常感谢。
猜你喜欢
  • 2019-07-29
  • 2021-11-24
  • 2018-04-09
  • 2019-12-29
  • 1970-01-01
  • 2019-07-03
  • 1970-01-01
  • 2018-11-18
  • 1970-01-01
相关资源
最近更新 更多