首页 > 解决方案 > 错误:“未捕获(承诺):[object Object]

问题描述

当我尝试将 GET 方法发布到休息 api 时发生错误,但在邮递员中它工作正常。

 public cartview() {
    let localaccesstoken = localStorage.getItem('token');
    let apiUrl = this.urlService.apiUrl+'cart?access_token='+localaccesstoken;
    console.log(apiUrl);

    return new Promise((resolve, reject) => {
        console.log("test : "+apiUrl);
        this.http.get(apiUrl)
          .subscribe(res => {
            console.log("w3cert Url : "+JSON.stringify(res));            
            console.log(resolve(res));
          }, (err) => {
            console.log('w3cert : '+reject(err));
        });
    });

在控制台日志中,它显示了一个 api。我复制了那个 api 并发布在邮递员中,它正在工作,但在应用程序中它显示了这个错误:

错误:“未捕获(承诺中):[object Object]”

标签: typescriptionic-frameworkionic3http-get

解决方案


将您的方法更改为以下内容:

 public cartview() {
   let localaccesstoken = localStorage.getItem('token');
   let apiUrl = this.urlService.apiUrl+'cart?access_token='+localaccesstoken;
   console.log(apiUrl);
   return this.http.get(apiUrl).pipe(
     tap(res => console.log(res))
   ).toPromise() <--- rxjs wraps the observable in a Promise for you
 });

我认为以上内容应该类似于服务方法。因此,然后在您的组件中(或您想要获得承诺的地方)您可以调用 .then() 方法:

...cartview().then(res => console.log(res)).catch(err => console.error(err))

从上面的代码中,我可以看到你不能很好地使用 observables/promise,而且,你正在记录 resolve/reject 方法本身,而不是结果。


推荐阅读