Angular 无法从异步函数获取值

Angular 无法从异步函数获取值,angular,angular6,Angular,Angular6,我正在尝试获取ngOnInit上的async函数的结果 在.ts文件中,我添加了以下功能: async load() { this.picaes = await this.userService.getAffectedExpertisesPromiseSE(25); console.log("-Inside load--------------" + this.picaes); return this.picaes; } 在ngOnInit上,我称之为异步功能: co

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

.ts文件中,我添加了以下功能:

async load()
{ 
    this.picaes = await this.userService.getAffectedExpertisesPromiseSE(25);
    console.log("-Inside load--------------" + this.picaes);
    return this.picaes;
}
在ngOnInit上,我称之为异步功能:

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;
}
async GetAffectedExpertisePromise(id:number):承诺
{
var url=`${this.baseUrl}/users/expertisesObj/${id}`;
var result=await(await-fetch(url)).text();
返回结果;
}
这将产生:

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

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

因此,我的问题是无法在控制台外部负载上获得结果

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

异步函数返回的承诺不是您期望的输出。因此,您将无法获取此.load()上的值。而是将代码更改为:

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

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

var request = new XMLHttpRequest();
request.open('GET', 'http://localhost:6227/api/auth/users', false);  
request.send(null);
您可以使用,这可能有助于您维护同步呼叫


HTH.

const v=wait this.load();控制台日志(v)您好,先生@Reactgular,谢谢您的回复。我得到的'wait'表达式只允许在sublime上的异步函数中使用。您好,先生@Indragith,非常感谢您的回复。但是,我知道。但我想在外面得到结果。你有解决这个问题的想法吗?。非常感谢,先生。初始化组件中的一些变量。然后,您可以在内部将数据分配给该变量。否则,您可以将加载函数移到ngOnInit之外,并声明一个新的异步函数用于加载数据,该函数将删除错误“wait”表达式仅允许在异步函数中使用“Yes Sir@Indragith,这就是我所做的,
async load()
在我的问题上提出的ngOnInit之外。我尝试了
let list:experties[]=[];this.load().then((data)=>{list=data;console.log('IN-load---------'+data);})console.log(“-OUT-load---------”+list),但我在Out上什么都没有是的,这样我就有了正确的答案。非常感谢。