topfans/frontend/utils/preloadApi/scheduler.js

41 lines
1.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// frontend/utils/preloadApi/scheduler.js
// 调度器:启动期预热 + idle 预拉
// 依赖 core.js 的 run()
import { run } from './core'
// App 端 fallback没有 requestIdleCallback用 setTimeout
const idle =
typeof requestIdleCallback === 'function'
? requestIdleCallback
: (cb) => setTimeout(() => cb({ didTimeout: false, timeRemaining: () => 50 }), 0)
/**
* 启动期预热
* @param {Array} startupList - config.startup 数组
*/
export function warmStartup(startupList) {
if (!startupList || !Array.isArray(startupList)) return
console.log('[preload] warmStartup:', startupList.length, 'keys')
for (const entry of startupList) {
// fire-and-forget不 await并发由 core 内部 semaphore 控制
run(entry.key, entry.params)
}
}
/**
* idle 预拉幂等run 内部处理去重和缓存命中)
* @param {Array} idleList - config.idle 数组
*/
export function warmIdle(idleList) {
if (!idleList || !Array.isArray(idleList)) return
idle(() => {
console.log('[preload] warmIdle:', idleList.length, 'keys')
for (const entry of idleList) {
run(entry.key, entry.params)
}
})
}