异步任务返回错误后在LiveView中渲染错误页面

问题描述 投票:0回答:1

有更好的方法来完成这项工作吗?

我想在 LiveView 的任务中做一些异步工作。如果结果是错误情况,我想向最终用户显示错误页面而不是 LiveView 主页面。这是我目前正在做的事情:

  1. 通过handle_params/3中的Task.Supervisor.async_nolink/3调用异步任务来做一些工作

  2. 使用handle_info/2来监听结果。如果结果错误,我使用 Phoenix.LiveView.redirect/2 重定向到根页面“/”

  3. 我在handle_param/2中有一个if语句,上面写着:

    if result_of_async_workflow == :error do
      raise UnknownErrorPage
    end
    

这会向用户显示正确的错误页面。

这是完成此工作流程的唯一方法吗?我在handle_info/2中尝试了

raise UnknownErrorPage
,但没有成功。

elixir phoenix-framework phoenix-live-view
1个回答
0
投票
 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
© www.soinside.com 2019 - 2024. All rights reserved.