Javascript TypeScript如何访问promise方法中的字段

Javascript TypeScript如何访问promise方法中的字段,javascript,typescript,promise,es6-promise,Javascript,Typescript,Promise,Es6 Promise,我正在尝试访问promise方法中的字段 代码如下: // Import stylesheets import './style.css'; export class User{ firstName:string; lastName:string; constructor(){ this.firstName = "Tom"; this.lastName = "Jack"; this.getName = this.g

我正在尝试访问promise方法中的字段

代码如下:

// Import stylesheets
import './style.css';
export class User{
  
  firstName:string;
  lastName:string;
  constructor(){
    this.firstName = "Tom";
    this.lastName = "Jack";
    this.getName = this.getName.bind(this);
  } 
  getName():Promise<string>{
    return new Promise((resolve,reject) =>{
      return resolve(`My Name is ${this.firstName} ${this.lastName}`);
    }) ;
  }
}

export class UserApi{
  userName:string;
  getUserName():string{
    let user = new User();
    user.getName().then(name => {
      return name;
    });
    return '';
  }
  
}
// Write TypeScript code!
const appDiv: HTMLElement = document.getElementById('app');
appDiv.innerHTML = `<h1>TypeScript Starter</h1>`;
let user = new UserApi();
appDiv.append('This is ' + user.getUserName());
//导入样式表
导入“/style.css”;
导出类用户{
名字:字符串;
lastName:string;
构造函数(){
this.firstName=“Tom”;
this.lastName=“杰克”;
this.getName=this.getName.bind(this);
} 
getName():承诺{
返回新承诺((解决、拒绝)=>{
返回解析(`My Name is${this.firstName}${this.lastName}`);
}) ;
}
}
导出类用户API{
用户名:字符串;
getUserName():字符串{
让用户=新用户();
user.getName().then(name=>{
返回名称;
});
返回“”;
}
}
//写打字脚本代码!
const-appDiv:HTMLElement=document.getElementById('app');
appDiv.innerHTML=`TypeScript Starter`;
让user=newuserapi();
appDiv.append('这是'+user.getUserName());
user.getUserName()
返回空值

如何从promise方法获取所需的字符串

换句话说,如何在Promise方法中访问
this

更新:


我对Promise的返回值没有异议,请注意如何从类方法中访问类属性或值,它是return
Promise

您应该从getUserName方法中返回一个Promise。像这样:

getUserName(){
    let user = new User();
    return user.getName().then(name => {
        return name;
    });
}
如果你只是想返回上面的名字,你不需要“then”:

return user.getName();
当您使用getUserName方法时,您需要处理承诺。像这样:

let user = new UserApi();
user.getUserName().then((name) => {
    appDiv.append('This is ' + name);
});

你为什么在这里使用
Promise
?@Antoni这只是一个演示,
getName()
将是一个发送请求或任何其他操作的方法。@jornsharpe它是如何工作的?我想访问
此.firstName
在Promise方法
getName()
中,对于您的代码,
getUserName
将抛出错误。对此表示抱歉。什么错误?检查是的。修复getUserName的返回类型并更新最后一行的用法,它应该可以返回预期的结果,我想知道是否有任何方法可以避免
user.getUserName()。然后