我想使用Object
获得Promise
。
波纹管,是方法:
async getUri()
{
var data = this.userService.getOrders();
var outside_uri = await data.then((uri) => { console.log('inside => ' + uri); return uri;})
console.log('outside => ' + outside_uri)
}
其中
getOrders(): Promise<Profession[]>
{
return this.http.get<Profession[]>(`${this.baseUrl}/users/professions/id/2`)
.toPromise()
.then((response) => response);
}
但是当我像这样在 ngOnInit()上调用此方法时:
console.log("-----Result: " + this.getUri());
它产生:
-----结果:[对象承诺]
inside => [object Object]
outside => [object Object]
您是否对解决该问题有任何想法?非常感谢。
答案 0 :(得分:0)
您需要使用await
来等待诺言解决。
您需要在await
中this.userService.getOrders();
this.getUri()
和console.log
所以您的console.log
应该如下所示:
var uri = await this.getUri()
console.log("-----Result: " + uri);
答案 1 :(得分:0)
您的代码在getOrders
函数中犯了一个小错误,因为您正在方法的主体内解决诺言,并且函数希望您得到诺言
因此,请修改您的代码以使其符合以下条件
getOrders(): Promise<any>
{
return this.http.get(`${this.baseUrl}/users/professions/id/2`)
.toPromise();
}
和
async getUri()
{
let data = this.userService.getOrders();
let outside_uri;
await data.then((uri) => {
console.log('inside => ' + uri);
outside_uri = uri;
})
console.log('outside => ' + outside_uri)
}