当前位置: 首页 > 知识库问答 >
问题:

Angular2:使用promise检索FileReader结果

秦珂
2023-03-14

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

<input type="file" style="display: none;" (change)="importXML($event)">

此函数调用服务中的一个函数,该函数假定将我的xml文件转换为json

importXML(event): void {
        const obj = this.myService.convertXML2Json(event.target);
}

在服务函数中,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控制器中使用它,特别是在promise的情况下?或者我应该使用setTimeout吗?

共有2个答案

司寇嘉茂
2023-03-14
  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);
巴宏恺
2023-03-14

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

fr.onloadevent=e=

 类似资料:
  • 我试图构建一个Spring Boot REST API,从MySQL DB中获取数据。这是我在Spring Boot REST API应用程序的存储库代码中定义的JPA查询方法: 这是我要查询的表的详细信息:

  • 我正在使用Jmeter对我的ASP.NET应用程序进行负载测试。 我正在测试搜索功能,什么是在获得结果的响应时间。 我面临的问题是,当我第一次搜索时,说我搜索了“我很好”,并说它花了9876毫秒,下次我搜索同样的东西只需要4567毫秒,第三次只需要4234毫秒。 我正在使用HTTP缓存管理器,我已经检查了“每次迭代都清除缓存”。我还使用了Http Cookie管理器,并检查了“每次迭代清除Cook

  • 此类继承自InputStreamReader类。 FileReader用于读取字符流。 该类有几个构造函数来创建所需的对象。 以下是FileReader类提供的构造函数列表。 Sr.No. 构造函数和描述 1 FileReader(File file) 给定要读取的文件,此构造函数创建一个新的FileReader。 2 FileReader(FileDescriptor fd) 在给出要读取的Fi

  • 我通过一个服务公开了一个HTTP GET请求,几个组件正在使用这个数据(一个用户的配置文件细节)。我希望第一个组件请求实际执行对服务器的HTTP GET请求并缓存结果,这样后续的请求将使用缓存的数据,而不是再次调用服务器。 这里有一个服务的例子,你会建议如何用Angular2和typescript实现这个缓存层。

  • 我试图使用庞大的Node.js包将文件从Docx转换为HTML。庞大的自述文件建议使用以下格式转换文件: 在函数中的任何位置放置语句将不允许我使用存储的html,但是我可以将正确的html内容输出到控制台。我需要关于如何返回/使用promise之外的html变量的建议,谢谢。

  • 在我们的项目中,我们使用JSON在前端和后端之间进行数据传输。基本上,我们通过准备WSRequestHolder来创建请求,就像play doc告诉我们的那样(https://www.playframework.com/documentation/2.3.7/JavaWS)然后发布一个json字符串。然后将WSResponse映射为“asJson”,并作为promise返回。 但与WSRespon