如何从内部类中调用的函数返回值

时间:2019-05-02 05:06:55

标签: javascript typescript angular5

当用户单击“导出”按钮时,我试图显示一个加载程序。我创建了一个单独的类来执行此导出功能。

这是我尝试过的代码。

我的问题是加载程序设置为true,但是我不确定导出完成后如何将其设置为false。

HTML

<app-loader [showLoader]="showLoader"></app-loader>

ts

import { csvExport } from '../../classes/csvExport';

export class DashboardSpaComponent implements OnInit {
    public csvExport: csvExport = new csvExport();

    // LOADER FLAG
    public showLoader: boolean = false;

    downloadPDF() {
        this.showLoader = true;
        //call class
        this.csvExport.download();

    }
}

csvExport.ts

export class CsvExport {
    download() {
        // code here to do export 
    }
}

1 个答案:

答案 0 :(得分:1)

您需要返回一个这样的承诺。

export class CsvExport {
    download() {
        return new Promise((resolve, reject) => {
           // code here to do export
           // on completion call this. resolve()
        }) 
    }
}

并使用这样的下载功能

this.csvExport.download().then(()=>{
    this.showLoader = false;
})

.then在承诺被解决时调用(调用resolve函数) 您可以从here

了解更多信息