我正在尝试获取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}]
所以我的问题是我无法在控制台外部负载上获得结果。
您能告诉我我错过了什么吗? 非常感谢。
答案 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。