Jelajahi Sumber

优化多张图片的渲染,暂停预取任务

Michael Wang 4 tahun lalu
induk
melakukan
48a110a677
1 mengubah file dengan 14 tambahan dan 4 penghapusan
  1. 14 4
      src/features/mark/Mark.vue

+ 14 - 4
src/features/mark/Mark.vue

@@ -116,6 +116,8 @@ export default defineComponent({
       const res = await getGroup();
       store.groups = res.data;
     }
+
+    let preDrawing = false;
     async function updateTask() {
       const res = await getTask();
       if (res.data.libraryId) {
@@ -151,7 +153,12 @@ export default defineComponent({
         // for (const sliceUrl of (res.data as Task).sliceUrls) {
         //   fetch(sliceUrl);
         // }
-        preDrawImage(res.data);
+        try {
+          preDrawing = true;
+          await preDrawImage(res.data);
+        } finally {
+          preDrawing = false;
+        }
       } else {
         store.message = res.data.message;
       }
@@ -160,9 +167,12 @@ export default defineComponent({
     // 5秒更新一次tasks
     addInterval(() => {
       // console.log("get task", store.tasks);
-      if (store.tasks.length < (store.setting.prefetchCount ?? 3)) {
-        // 回看打开时,停止取任务
-        if (!store.historyOpen) updateTask();
+      // 正在预绘制中,则不要再取任务,以免拖慢当前任务的绘制
+      if (!preDrawing) {
+        if (store.tasks.length < (store.setting.prefetchCount ?? 3)) {
+          // 回看打开时,停止取任务
+          if (!store.historyOpen) updateTask();
+        }
       }
     }, 5 * 1000);