From 8ce00050e63dc2edcec56a8a447116512a6ab66c Mon Sep 17 00:00:00 2001 From: hello8693 <1320998105@qq.com> Date: Sat, 22 Mar 2025 17:45:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BB=BB=E5=8A=A1=E9=98=9F?= =?UTF-8?q?=E5=88=97=E5=8A=9F=E8=83=BD=EF=BC=8C=E6=94=AF=E6=8C=81=E5=AE=9A?= =?UTF-8?q?=E6=97=B6=E6=89=A7=E8=A1=8C=E4=BB=BB=E5=8A=A1=E5=B9=B6=E5=9C=A8?= =?UTF-8?q?=E6=92=AD=E6=94=BE=E5=99=A8=E8=A7=86=E5=9B=BE=E4=B8=AD=E9=9B=86?= =?UTF-8?q?=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/renderer/src/core/taskQueue.ts | 46 +++++++++++++++++++++++++++ src/renderer/src/views/PlayerView.vue | 38 ++++------------------ 2 files changed, 52 insertions(+), 32 deletions(-) create mode 100644 src/renderer/src/core/taskQueue.ts diff --git a/src/renderer/src/core/taskQueue.ts b/src/renderer/src/core/taskQueue.ts new file mode 100644 index 0000000..e791f7c --- /dev/null +++ b/src/renderer/src/core/taskQueue.ts @@ -0,0 +1,46 @@ +import { ref } from 'vue'; +import { v4 as uuidv4 } from 'uuid'; + +interface Task { + id: string; + executeTime: number; + taskFunction: () => void; +} + +const taskQueue = ref([]); +const intervalId = ref(null); + +const addTask = (executeTime: number, taskFunction: () => void) => { + const task: Task = { + id: uuidv4(), + executeTime, + taskFunction, + }; + taskQueue.value.push(task); + taskQueue.value.sort((a, b) => a.executeTime - b.executeTime); +}; + +const checkTasks = () => { + const now = new Date().getTime(); + while (taskQueue.value.length > 0 && taskQueue.value[0].executeTime <= now) { + const task = taskQueue.value.shift(); + if (task) { + task.taskFunction(); + } + } +}; + +const startTaskQueue = () => { + if (!intervalId.value) { + intervalId.value = window.setInterval(checkTasks, 200); + } +}; + +const stopTaskQueue = () => { + if (intervalId.value) { + clearInterval(intervalId.value); + intervalId.value = null; + } +}; + +export { addTask, startTaskQueue, stopTaskQueue }; diff --git a/src/renderer/src/views/PlayerView.vue b/src/renderer/src/views/PlayerView.vue index d632db1..648d0aa 100644 --- a/src/renderer/src/views/PlayerView.vue +++ b/src/renderer/src/views/PlayerView.vue @@ -1,32 +1,12 @@ -