import { getHomePage } from '@/common/server/home' import { getConfig } from '@/common/server/config'; /** * 应用初始化函数,带有超时控制 * @param {number} timeoutMs - 超时时间(毫秒) * @returns {Promise} - 返回Promise,true表示初始化成功,false表示失败 */ export const appInit = async (timeoutMs = 5000) => { try { //获取系统配置 const getConfigTask = getConfig(); //获取首页关键数据 const homeTask = getHomePage(); // 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([getConfigTask, homeTask]), timeoutPromise ]); // 4. 如果没有超时全部获取成功,返回true return true; } catch (error) { // 5. 错误处理(可能是超时错误或广告获取失败) console.error('初始化任务失败:', error); // 6. 返回false表示初始化失败 return false; } }