Свойство "подписаться" не существует для типа "Обещание". ' - PullRequest
0 голосов
/ 12 июля 2020

Я работаю над http-запросом. Я столкнулся с проблемой ранее, когда мой объект показывает [обещание объекта] в запросе URL. Итак, я ждал возврата обещания объекта, который является моей переменной user.

Но теперь я получаю сообщение об ошибке

Свойство 'subscribe' не существует по типу Promise<Observable<any>>.

Я тоже погуглил и внес необходимые изменения, но результат тот же.

это мой код 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;
}

Ответы [ 2 ]

2 голосов
/ 12 июля 2020

попробуйте:

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

Причина в том, что вы пропустили await

Как и @Brendan B, упоминается, что на самом деле нет причин для использования метода async on getUserOrder, поскольку вы возвращаете Observable. Вы также можете удалить ключевое слово async из этого метода, и он будет работать.

1 голос
/ 12 июля 2020

asyn c функции не возвращают обещания, вы пытаетесь подписаться на обещание.

Попробуйте удалить asyn c из async getUserOrder()

...