From 2a59c59bae35d8bded1cdbab0bba465eda7c9242 Mon Sep 17 00:00:00 2001 From: syumai Date: Fri, 8 Nov 2024 02:05:57 +0900 Subject: [PATCH] split cloudflare/cron.WaitForCompletion from cron.ScheduleTask --- cloudflare/cron/scheduler.go | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/cloudflare/cron/scheduler.go b/cloudflare/cron/scheduler.go index 0c0bd0d..e4d3c40 100644 --- a/cloudflare/cron/scheduler.go +++ b/cloudflare/cron/scheduler.go @@ -5,6 +5,7 @@ import ( "fmt" "syscall/js" + "github.com/syumai/workers" "github.com/syumai/workers/internal/jsutil" "github.com/syumai/workers/internal/runtimecontext" ) @@ -46,14 +47,11 @@ func init() { jsutil.Binding.Set("runScheduler", runSchedulerCallback) } -//go:wasmimport workers ready -func ready() - // ScheduleTask sets the Task to be executed func ScheduleTask(task Task) { scheduledTask = task - ready() - select {} + workers.Ready() + WaitForCompletion() } // ScheduleTaskNonBlock sets the Task to be executed but does not signal readiness or block @@ -61,3 +59,9 @@ func ScheduleTask(task Task) { func ScheduleTaskNonBlock(task Task) { scheduledTask = task } + +// WaitForCompletion blocks until the task set by ScheduleTaskWithNonBlock is completed. +// Currently, this function never returns to support cloudflare.WaitUntil feature. +func WaitForCompletion() { + select {} +}