0

我正在向后端休息服务发送 GET 请求,如下所示:

def showAllEmployees =  Callback {
    org.scalajs.dom.ext.Ajax.get(url = "http://localhost:8081/fetchAllEmployees").onComplete {
      case Success(xhr) => {
        Callback.log(xhr.responseText)
      }
      case Failure(t) => println("An error has occurred: " + t.getMessage)
    }
  }

我想从响应中提取记录。我观察到 case Success 中的代码甚至没有被执行。

那么在 scalajs-react 中的惯用方式是什么?

4

1 回答 1

0
  1. 您正在将您的 ajax 调用包装成Callback,这意味着为了执行它 - 您必须调用.runNow()

  2. 如果Success您正在做的响应 Callback.log(xhr.responseText)Callback需要再次评估的,但是因为您在onComplete其中返回Unit- 这是不可能的。所以,以太做Callback.log(xhr.responseText).runNow()或只是使用println

工作示例:

def showAllEmployees =
  Callback {
    org.scalajs.dom.ext.Ajax
      .get(url =
        "https://run.mocky.io/v3/53993bf9-c589-4886-956b-e0b35a1ab13e"
      )
      .onComplete {
        case Success(xhr) =>
          Callback.log(xhr.responseText).runNow()
        case Failure(t) => println("An error has occurred: " + t.getMessage)
      }
  }
于 2021-10-11T20:43:07.793 回答