Http get 请求 URL 显示 [object promise]

Http get request URL shows [object promise]

我正在尝试使用网络 api 调用 get 方法来访问数据并显示在我的页面中。我的 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());
  
}

我真的很陌生。如果我不清楚,请告诉我。任何帮助将不胜感激..

更新

它显示未定义,因为它访问了顶部的变量值,而不是来自 ionViewWillEnter

User:string;
constructor(private http:Http,public storage: Storage){
   
}


async ionViewWillEnter()
{
  this.User = await this.storage.get('currentUser');
}
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());
  
}

您应该等待 Promise 的 return。您可以在构造函数内或在 ionViewWillEnter()

之类的生命周期内执行此操作
User: string;

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

Answer here: "This is the expected result."

更新

这是一种不同的方法:如果您的函数以某种方式被直接调用,您可以创建一个函数,该函数 return 存储变量。如果找到数据,则继续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');
}