URL-адрес запроса HTTP-получения показывает [обещание объекта] - PullRequest
0 голосов
/ 09 июля 2020

Я пытаюсь использовать метод get вызова веб-API для доступа к данным и отображения на моей странице. Мой URL-адрес будет примерно таким: https://localhost:44399/api/APIOrder/GetUserOrder?email=xxx@gmail.com, чтобы иметь возможность отображать данные.

Однако, когда я объединяю свой URL-адрес с переменной, он ничего не отображает, а журнал консоли показывает URL-адрес в https://localhost:44399/api/APIOrder/GetUserOrder?email=[object Promise]. Есть ли способ разрешить URL-адресу читать мою this.User переменную?

пожалуйста, просмотрите мой getUserOrder ()

User = this.storage.get('currentUser');
constructor(private http:Http,public storage: Storage){
   
}

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

Я действительно новичок в этом. Пожалуйста, скажите мне, если я не понимаю. Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 09 июля 2020

Вам следует дождаться возврата Обещания. Вы можете сделать это внутри конструктора или внутри жизненного цикла, например ionViewWillEnter()

User: string;

async ionViewWillEnter() {
  this.User = await this.storage.get('currentUser');
}

. Ответьте здесь: «Это ожидаемый результат».

ОБНОВЛЕНИЕ

Это другой подход: если ваша функция каким-то образом вызывается напрямую, вы можете создать функцию, которая возвращает переменную из хранилища. Если данные найдены, выполните http-запрос.

async getUserOrder() {
  const user = await this.getUserFromStorage();

  if (user) {
    var url="https://localhost:44399/api/APIOrder/GetUserOrder?email=";
    return this.http.get(url + user).map(res=>res.json());
  }
}

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