无法从异步函数获取值

时间:2019-07-08 08:49:19

标签: angular angular6

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

.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;
}

产生:

  

-外部负载-------------- [对象承诺]

     

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

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

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

HTH。