有更好的方法来完成这项工作吗?
我想在 LiveView 的任务中做一些异步工作。如果结果是错误情况,我想向最终用户显示错误页面而不是 LiveView 主页面。这是我目前正在做的事情:
通过handle_params/3中的Task.Supervisor.async_nolink/3调用异步任务来做一些工作
使用handle_info/2来监听结果。如果结果错误,我使用 Phoenix.LiveView.redirect/2 重定向到根页面“/”
我在handle_param/2中有一个if语句,上面写着:
if result_of_async_workflow == :error do
raise UnknownErrorPage
end
这会向用户显示正确的错误页面。
这是完成此工作流程的唯一方法吗?我在handle_info/2中尝试了
raise UnknownErrorPage
,但没有成功。
def handle_event("do_task", %{"id" => id}, socket) do
Task.async(fn -> async_task(id) end)
{:noreply, socket}
end
defp async_task(id) do
{:ok, redirect(socket, to: "/otra_pagina")}
end