查看源代码 Phoenix.LiveView.AsyncResult (Phoenix LiveView v0.20.17)

提供一个数据结构用于跟踪异步分配的状态。

有关更多信息,请参阅 Phoenix.LiveView 文档的 异步操作 部分。

字段

  • :ok? - 当为真时,表示 :result 已成功设置至少一次。
  • :loading - 当前的加载状态
  • :failed - 当前的失败状态
  • :result - 异步任务的成功结果

摘要

函数

更新失败状态。

创建处于加载状态的异步结果。

更新加载状态。

更新现有 async_result 的加载状态。

创建成功的结果。

更新成功的结果。

函数

链接到此函数

failed(result, reason)

查看源代码

更新失败状态。

失败时,加载状态将重置为 nil。如果结果之前是 ok?,则将设置 resultfailed

示例

iex> result = AsyncResult.loading()
iex> result = AsyncResult.failed(result, {:exit, :boom})
iex> result.failed
{:exit, :boom}
iex> result.loading
nil

创建处于加载状态的异步结果。

示例

iex> result = AsyncResult.loading()
iex> result.loading
true
iex> result.ok?
false

更新加载状态。

加载时,失败状态将重置为 nil

示例

iex> result = AsyncResult.loading(%{my: :loading_state})
iex> result.loading
%{my: :loading_state}
iex> result = AsyncResult.loading(result)
iex> result.loading
true
链接到此函数

loading(result, loading_state)

查看源代码

更新现有 async_result 的加载状态。

加载时,失败状态将重置为 nil。如果结果之前是 ok?,则将设置 resultloading

示例

iex> result = AsyncResult.loading()
iex> result = AsyncResult.loading(result, %{my: :other_state})
iex> result.loading
%{my: :other_state}

创建成功的结果。

:ok? 字段也将设置为 true,表示此结果已成功完成至少一次,无论将来状态是否发生变化。

示例

iex> result = AsyncResult.ok("initial result")
iex> result.ok?
true
iex> result.result
"initial result"

更新成功的结果。

:ok? 字段也将设置为 true,表示此结果已成功完成至少一次,无论将来状态是否发生变化。

确认后,加载和失败状态将重置为 nil

示例

iex> result = AsyncResult.loading()
iex> result = AsyncResult.ok(result, "completed")
iex> result.ok?
true
iex> result.result
"completed"
iex> result.loading
nil