scala - 如何使用 scala.js 读取文本文件?

标签 scala scala.js

基本上我想弄清楚我需要传递给 onload() 方法的内容

def selectedFile(e: ReactEventI) = {
  val reader = new dom.FileReader()
  reader.readAsText(e.currentTarget.files.item(0))
  reader.onload(
  ) 
}

最佳答案

惯用的 Scala,带有错误处理

我更喜欢使用模式匹配和 map,而不是使用回调:

def printFileContent(file: dom.File) =
  readTextFile(file).map {
    case Right(fileContent) => println(s"File content: $fileContent")
    case Left(error) => println(s"Could not read file ${file.name}. Error: $error")
  }

代码:

/** In the future, returns either the file's content or an error,
    if something went wrong */
def readTextFile(fileToRead: dom.File): Future[Either[DOMError, String]] = {

  // Used to create the Future containing either the file content or an error
  val promisedErrorOrContent = Promise[Either[DOMError, String]]

  val reader = new FileReader()
  reader.readAsText(fileToRead, "UTF-8")

  reader.onload = (_: UIEvent) => {
    val resultAsString = s"${reader.result}"
    promisedErrorOrContent.success(Right(resultAsString))
  }
  reader.onerror = (_: Event) => promisedErrorOrContent.success(Left(reader.error))

  promisedErrorOrContent.future
}

关于scala - 如何使用 scala.js 读取文本文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30332326/

相关文章:

scala - 使用 Scala 解析 XML

scala - 如何使用 resourceGenerators 复制 Scala.js 源映射?

scala - 调试使用 SBT Native Packager 构建的 Docker 应用程序

scala - 如何合并已排序的 `Stream` 或 `List` 的相邻、相似条目

scala.js - 使用 scala.js 方法作为回调

angularjs - Scala.js 与 Angular 类型转换

polymer - scala.js 中真正的 JS 类来开发 webcomponents

scala - Scala 的 Netbeans 类型信息

Scala/Play 2 - 无法运行示例 specs2 测试

scala - 模式匹配功能参数