我正在创建一种从API返回值的方法。如何实现异步/等待?
getAccountById(){
let accountName;
this.accountService.accountSelect(`SELECT * FROM account WHERE accountId = ${ localStorage.getItem('accountId') } AND accountArchived = 0`).subscribe(async (res: account) => {
accountName = await res[0]['accountLastName'];
});
return accountName;
}
console.log(getAccountById()); //undefined
答案 0 :(得分:0)
Promises
的情况下,使用 async / await可以减少回调地狱。在可观察的情况下,您必须订阅才能获得该值。因此,不能使用异步/等待。如果要使用基于承诺的请求,可以使用axios
或isomorphic fetch
代替HttpClient。在这种情况下,您可以使用await
将响应对象放入某个async
函数内部的变量中
答案 1 :(得分:0)
也许,您想这样更改实现:
getAccountById() {
return this.accountService.accountSelect(`SELECT * FROM account WHERE accountId = ${ localStorage.getItem('accountId') } AND accountArchived = 0`);
}
...
getAccountById().subscribe(value=>{
console.log(value);
})