update at 2026-02-11 19:35:34

This commit is contained in:
douboer
2026-02-11 19:35:34 +08:00
parent cc6c9c8a99
commit 63f11b0067
6 changed files with 23 additions and 10 deletions

View File

@@ -50,6 +50,7 @@ let previewGenerateTimer: ReturnType<typeof setTimeout> | null = null
let previewGenerationToken = 0
let hasTriggeredInitialGenerate = false
let previewLazyLoadObserver: IntersectionObserver | null = null
let batchOwnerToken: number | null = null
const previewApiCache = new Map<string, PreviewApiCacheItem>()
@@ -375,16 +376,26 @@ async function generatePreviewBatch(
}
async function loadNextPreviewBatch(generationToken: number) {
if (isBatchGenerating.value || isStaleGeneration(generationToken)) {
if (isStaleGeneration(generationToken)) {
return
}
if (isBatchGenerating.value) {
if (batchOwnerToken === generationToken) {
return
}
// 旧批次仍在收尾时,允许新批次接管
isBatchGenerating.value = false
batchOwnerToken = null
}
const startIndex = processedFontCount.value
if (startIndex >= activePreviewFonts.value.length) {
return
}
isBatchGenerating.value = true
batchOwnerToken = generationToken
try {
const batchItems = await generatePreviewBatch(
@@ -418,8 +429,9 @@ async function loadNextPreviewBatch(generationToken: number) {
console.error('Failed to load preview batch:', error)
previewErrorMessage.value = `预览生成失败:${error instanceof Error ? error.message : String(error)}`
} finally {
if (!isStaleGeneration(generationToken)) {
if (batchOwnerToken === generationToken) {
isBatchGenerating.value = false
batchOwnerToken = null
}
}
}
@@ -517,6 +529,7 @@ onBeforeUnmount(() => {
}
disconnectPreviewLazyLoadObserver()
previewGenerationToken += 1
batchOwnerToken = null
})
function toggleSelectItem(item: PreviewItemType) {