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

时间:2019-03-29 07:04:53

标签: typescript ionic-framework ionic3 http-get

当我尝试将GET方法发布到rest 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并将其发布在postman中,并且可以正常工作,但是在应用程序中却显示此错误:

  

错误:“未捕获(在承诺中):[对象对象]”

2 个答案:

答案 0 :(得分:1)

将您的方法更改为如下所示:

 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))

从上面的代码中,我可以看到您在可观察对象/ promise方面工作得不好,而且,您正在记录resolve / reject方法本身,而不是结果。

答案 1 :(得分:1)

我认为问题出在您调用cartview()函数的位置 您应该先调用它,然后同时捕获两者:

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