You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Svelte如何在显示加载器时延迟API响应?

实现Svelte加载器延迟1-2秒显示的方案

你可以通过在API请求流程中添加延迟逻辑,确保加载器至少显示1-2秒,避免请求过快导致加载器一闪而过的问题。下面是两种可行的修改方案:

方案一:强制等待固定时长(不管API请求耗时)

这种方式会让API请求和延迟等待同时进行,只有当两者都完成后才更新store,保证加载器至少显示指定时长(比如1.5秒):

修改store.js中的getData函数:

export function getData(url) {
    // 定义延迟函数
    const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
    
    const load = async () => {
        // 同时发起API请求和延迟等待
        const [response] = await Promise.all([
            fetch(url),
            sleep(1500) // 这里设置1.5秒延迟,可按需调整
        ]);
        const data = await response.json();
        
        provider.set(data.provider);
        store.set(data);
    }
    
    load();
    return store;
}

方案二:仅在API请求过快时补延迟

如果API请求本身耗时已经超过1-2秒,就不用额外等待;只有当请求耗时不足时,才补充剩余时间,兼顾体验和效率:

修改store.js中的getData函数:

export function getData(url) {
    const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
    
    const load = async () => {
        const startTime = Date.now();
        
        // 发起API请求
        const response = await fetch(url);
        const data = await response.json();
        
        // 计算已耗时,补够剩余延迟时间
        const elapsedTime = Date.now() - startTime;
        const remainingDelay = Math.max(1500 - elapsedTime, 0); // 确保延迟不小于0
        await sleep(remainingDelay);
        
        provider.set(data.provider);
        store.set(data);
    }
    
    load();
    return store;
}

两种方案都能实现你的需求,你可以根据实际场景选择:

  • 若希望加载器稳定显示固定时长,选方案一;
  • 若想兼顾请求效率,只在请求过快时补延迟,选方案二。

内容的提问来源于stack exchange,提问作者Northify

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 13:34:38