我可以将Angular toPromise方法的http客户端转换为异步并等待吗?

时间:2018-08-17 09:45:03

标签: javascript angular asynchronous promise async-await

我的提供者中有一个observable,可以通过下面的promise 方法示例转换为toPromise():< / p>

getAllProvinces() {
      return this.http.get(`assets/ph/provinces.json`).toPromise()
  }

以及在我的组件中,我将使用 async and await 来返回值异步下面的示例:

async getAllProvince() {
    try {
      const provinces = await this.registerApi.getAllProvinces
      console.log(provinces)
    } catch(e) {
      console.log(e)
    }
    // this.registerApi.getAllProvinces().then(response => this.provinces = response).catch(err => console.log(err))
  }

如果出现问题,我也想抓住错误。

有人能帮我个忙吗?将我的诺言转换成 async and await 。我仍然没有使用 async and await 。我知道这只是进化承诺

感谢有人可以帮助您。 预先感谢。

1 个答案:

答案 0 :(得分:0)

中这样做
   getAllProvinces() {
    const promise = new Promise<any>((resolve, reject) => {
     this.http.get(`assets/ph/provinces.json`).toPromise()
        .then((res: string[]) => {
          resolve(res);
        })
        .catch(error => {
          reject(error);
        });
    });
    return promise;
  }

这会将http请求转换为有角承诺。 剩下的只是一点点改变

async getAllProvince() {
    try {
      const provinces = await this.nameOftheService.getAllProvinces()
      console.log(provinces)
    } catch(e) {
      console.log(e)
    }

  }

这将起作用