Angular2:使用承诺检索FileReader结果

Angular2:使用承诺检索FileReader结果,angular,typescript,promise,settimeout,filereader,Angular,Typescript,Promise,Settimeout,Filereader,在我看来,有一个与控制器的一个功能链接的输入文件 <input type="file" style="display: none;" (change)="importXML($event)"> 在服务函数中,XML文件在文件读取器中读取,然后转换 在文件读取器的onloadend部分创建xml convertXML2Json(event): any { const file = event.files[0]; const fr = new FileReader();

在我看来,有一个与控制器的一个功能链接的输入文件

<input type="file" style="display: none;" (change)="importXML($event)">
在服务函数中,XML文件在文件读取器中读取,然后转换 在文件读取器的onloadend部分创建xml

convertXML2Json(event): any {
    const file = event.files[0];
    const fr = new FileReader();
    fr.onloadend = e => xmltoJsonFunction(fr.result);
    fr.readAsText(file)
}

如何在onloadend中检索转换后的json结果,以便在Angular控制器中使用它,特别是在承诺的情况下?或者我应该使用setTimeout吗

您的结果不在
fr
对象内。回调函数中的参数
e
具有读取文件的结果:


fr.onloadevent=e=>xmltoJsonFunction(e)

您的结果不在
fr
对象内。回调函数中的参数
e
具有读取文件的结果:


fr.onloadevent=e=>xmltoJsonFunction(e)

事实上,如果我只在控制器部分编码,我找到了一个修复方法:

  public XMLParsed;

  importXML(event): void {
    const file = event.target.files[0];
    const fr = new FileReader();
    fr.onloadend = (e: any) => {
        this.XMLParsed = xmlToJSON(e.target.result);
    };
    fr.readAsText(file);

实际上,如果我只在控制器部分编码,我找到了一个修复方法:

  public XMLParsed;

  importXML(event): void {
    const file = event.target.files[0];
    const fr = new FileReader();
    fr.onloadend = (e: any) => {
        this.XMLParsed = xmlToJSON(e.target.result);
    };
    fr.readAsText(file);