Javascript TypeScript如何访问promise方法中的字段
我正在尝试访问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
// 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()。然后?