创建使用Await / Async从API返回值的方法

时间:2019-01-21 12:05:12

标签: angular typescript

我正在创建一种从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

2 个答案:

答案 0 :(得分:0)

Promises的情况下,使用

async / await可以减少回调地狱。在可观察的情况下,您必须订阅才能获得该值。因此,不能使用异步/等待。如果要使用基于承诺的请求,可以使用axiosisomorphic 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);
 })