// import { getAdvertList } from "@/common/server/interface/advert"; import { preloadHomeData } from '@/common/server/index' import { preloadConfigData } from '@/common/server/config' import { anonymousLogin } from '@/common/server/user' /** * 应用初始化函数,带有超时控制 * @param {number} timeoutMs - 超时时间(毫秒) * @returns {Promise} - 返回Promise,true表示初始化成功,false表示失败 */ export const appInit = async (timeoutMs = 5000) => { try { //获取首页关键数据 const homeTask = preloadHomeData(); const configTask = preloadConfigData(); const anonymousTask = anonymousLogin(); // 2. 创建一个会在指定时间后拒绝的Promise用于超时控制 const timeoutPromise = new Promise((_, reject) => setTimeout(() => // 当超时触发时,拒绝Promise并返回超时错误 reject(new Error(`初始化获取超时 (${timeoutMs}ms)`)), timeoutMs ) ); // 3. 使用Promise.race让首页获取数据和超时Promise"赛跑" // 哪个先完成(成功或失败)就采用哪个的结果 await Promise.race([ // 使用Promise.all包装是为了保持一致性 Promise.all([homeTask, configTask, anonymousTask]), timeoutPromise ]); // 4. 如果没有超时全部获取成功,返回true return true; } catch (error) { // 5. 错误处理(可能是超时错误或首页获取失败) console.error('初始化任务失败:', error); // 6. 返回false表示初始化失败 return false; } }