我有一个 Quantum(Quantum 是 Elixir 的 cron 作业样式代码调度程序和模块)定时事件,我想每分钟执行 LiveView handle_event 函数内的操作。 handle_event 函数采用三个参数,它们在配置页面中不可用。我不能传递不存在的参数。
简而言之,我该怎么做该代码试图执行的操作:
config.ex 量子密码:
config :app, App.Scheduler,
jobs: [
# Every minute
{"* * * * *", {AppWeb.PageLive, :handle_event, ["add"]}},
]
模块代码
defmodule AppWeb.PageLive do
use AppWeb, :live_view
alias App.Periodically
def mount(_params, _session, socket) do
{:ok, assign(socket, run_timer: 0)}
end
def handle_event("add",_params, socket) do
{:noreply, assign(socket, run_timer: socket.assigns.run_timer + 1)}
end
def render(assigns) do
~H"""
<%= assigns.run_timer %>
<.button phx-click="add">Add</.button>
"""
end
end
单击按钮时,上面的代码会增加一个计数器。我想使用 Quantum 来触发一般的 handle_event 内部——它可以做任何事情。我创建了一个运行其他功能的工作尖峰测试,而不是我想要的特定事件。
App.Scheduler代码在这里:
defmodule App.Scheduler do
use Quantum, otp_app: :app
end
谢谢!