【问题标题】:Property 'subscribe' does not exist on type 'Promise<Observable<any>>''Promise<Observable<any>>' 类型上不存在属性 'subscribe'
【发布时间】:2020-11-01 19:54:51
【问题描述】:

我正在处理一个 http 请求。我之前遇到过我的对象在 URL 请求中显示 [object promise] 的问题。所以我一直在等待对象的 Promise 返回,这是我的 user 变量。

但是我现在遇到了一个错误

Promise&lt;Observable&lt;any&gt;&gt; 类型上不存在属性“订阅”。

我也用谷歌搜索了这个并进行了必要的更改,但结果是一样的。

这是我的 http 请求代码:

async getUserFromStorage():Promise<any>{
    return await this.storage.get('currentUser');
}

async getUserOrder()
{
  const user = await this.getUserFromStorage();
  var url="https://localhost:44399/api/APIOrder/GetUserOrder?email=";
  console.log(url+user);
  return this.http.get(url+user).map(res=>res.json());
}

这是失败的代码:

    public getOrders(){
    this.getUserOrder()
    .subscribe(data =>{                //HERE
      for(var i=0;i<data.length;i++)
      {
        this.orders.push(data[i]);
      }
    })
    return this.orders;
}

【问题讨论】:

    标签: angular typescript ionic-framework


    【解决方案1】:

    尝试:

    const getUserOrder = await this.getUserOrder();
    getUserOrder.subscribe(data => {
    ...
    

    原因是你少了await


    就像@Brendan B 提到的,实际上getUserOrder 方法上的async 也没有理由,感觉你正在返回一个 Observable。您也可以从此方法中删除async 关键字,它会起作用。

    【讨论】:

    • 如果这对您有用,您也可以接受答案吗?谢谢 :) 编码愉快
    【解决方案2】:

    异步函数不返回承诺,您正在尝试订阅承诺。

    尝试从 async getUserOrder() 中删除异步

    【讨论】:

      猜你喜欢
      • 2017-10-20
      • 2019-12-26
      • 1970-01-01
      • 1970-01-01
      • 2016-09-01
      • 2017-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多