【问题标题】:Error: "Uncaught (in promise): [object Object]错误:“未捕获(承诺):[object Object]
【发布时间】:2019-08-20 01:55:08
【问题描述】:

当我尝试将 GET 方法发布到 rest api 时发生错误,但在 postman 中它工作正常。

 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]”

【问题讨论】:

  • 我认为错误不在 api 调用错误中,而是在代码的第一行。 localStorage 变量的类型是什么。这可能是存储类型变量并注入构造函数。请尝试使用这个关键字调用 this.localStorage.getItem('token');

标签: typescript ionic-framework ionic3 http-get


【解决方案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))

从上面的代码中,我可以看到您在使用 observables/promise 时表现不佳,而且您正在记录 resolve/reject 方法本身,而不是结果。

【讨论】:

  • 我试过上面的代码,它显示[找不到名称'tap'。]@Francisco
  • 你确实需要从 rxjs 操作符导入它
  • 从 'rxjs/operators' 导入 { tap };
  • 在提供程序中尝试了该代码之后。当我在 ts 页面中调用该响应时。 cartpage(){ this.cart.cartview().then((result) => { }) } 它显示类似这样的错误 [Property 'then' does not exist on type 'void'.]
  • 这是打字稿错误吗?你为什么要在提供者中调用它?尝试在方法中声明返回的类型,例如:public cartview(): Promise&lt;any&gt; {...
【解决方案2】:

我认为问题出在您调用 cartview() 函数的位置 您应该使用 then 调用它并同时捕获它们:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-16
    • 2019-03-08
    • 1970-01-01
    • 1970-01-01
    • 2017-05-22
    • 2019-04-09
    • 1970-01-01
    相关资源
    最近更新 更多