scalajs-react:处理 ajax 响应的惯用方式
Posted
技术标签:
【中文标题】scalajs-react:处理 ajax 响应的惯用方式【英文标题】:scalajs-react: Idiomatic way of processing ajax response 【发布时间】:2021-11-24 16:48:14 【问题描述】:我正在向后端rest服务发送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 中的惯用方式是什么?
【问题讨论】:
你为什么不直接使用scalajs-react Ajax。它已经返回Callback
。
我也试过了。我看不出行为有什么变化。 onComplete 中的代码永远不会被调用。
【参考方案1】:
您将 ajax 调用包装到 Callback
,这意味着为了执行它 - 您必须调用 .runNow()
在Success
响应的情况下,您正在执行 Callback.log(xhr.responseText)
这是需要再次评估的Callback
,但是当您在返回Unit
的onComplete
内部时 - 这是不可能的。所以,ether 做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)
【讨论】:
以上是关于scalajs-react:处理 ajax 响应的惯用方式的主要内容,如果未能解决你的问题,请参考以下文章
Scalajs-react:未捕获的 TypeError:无法读取 null 的属性(读取“值”)