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上什么都没有是的,这样我就有了正确的答案。非常感谢。