如何改写JavaScript类方法使其返回Promise已解析结果而非Promise
如何让异步方法直接返回同步的CompanyDto[]结果?
首先明确:异步操作(比如你的HTTP请求)不可能直接返回同步的CompanyDto[]类型结果。因为fetchAsync是异步执行的,需要等待请求完成才能拿到数据,而JavaScript/TypeScript的语法规定:async标记的方法,返回值必然是Promise类型,无法直接返回同步的结果对象。
你不需要改写GetAllCompanies方法,而是在调用它的时候,通过await或者.then()来获取实际的CompanyDto[]数据:
方式1:在异步函数中使用await(推荐)
// 示例调用代码 async function loadCompanies() { const myClass = new MyClass(); // await会等待Promise完成,直接拿到CompanyDto[]类型的结果 const companies: CompanyDto[] = await myClass.GetAllCompanies(); // 在这里处理companies数据,比如渲染到页面 console.log(companies); } // 调用这个异步函数 loadCompanies();
方式2:使用.then()处理结果
如果无法在异步函数中调用,可以用传统的Promise回调:
const myClass = new MyClass(); myClass.GetAllCompanies().then((companies: CompanyDto[]) => { // 在这里处理companies数据 console.log(companies); });
另外注意你的原代码有个语法错误:export MyClass应该改为export class MyClass,否则无法正确导出类。
内容的提问来源于stack exchange,提问作者Dalibor Pavlik
相关产品推荐
相关产品推荐

