如何将 CSS 动画延迟与 NodeJS 延迟对齐?

发布于 2025-01-10 02:32:15 字数 1183 浏览 0 评论 0原文

当我的 setTimeout 在 NodeJS 中时,如何添加预加载器,下面是调用 api 并设置 10 秒延迟的代码:

function delay(s){
    return new Promise(resolve => setTimeout(resolve,s));
}


async function getXml(){
let ans;
await delay(10000)
const {data} = await axios.get('https://gist.githubusercontent.com/SwayamShah97/a3619c5828ac8ed8085c4ae295a855d9/raw/e4e372552e042bd8bd9e8ab87da93eb030114f86/people.xml');
xml2js.parseString(data, (err, result) => {
    if(err) {
        throw err;
    }
    ans = result
    
});

我尝试使用前端 js 添加加载器,如下所示:

window.addEventListener("load", function () {
    const loader = document.querySelector(".loader");
    loader.className += " hidden"; // class "loader hidden"
});

HTML:

<div class="loader">
    <img src="/public/images/coffee-loading.gif" alt="Loading..." />
</div>

CSS:

.loader.hidden {
    animation: fadeOut 10s;
    animation-fill-mode: forwards;
}

@keyframes fadeOut {
    100% {
        opacity: 0;
        visibility: hidden;
    }
} 

它的工作原理是,由于 setTimeout,它会等待 10 秒,然后向预加载器显示额外的 10 秒,而不是与延迟对齐。

我怎样才能实现这个功能?

How do I add a preloader when my setTimeout is in NodeJS, below is the code to call the api and set a delay for 10s:

function delay(s){
    return new Promise(resolve => setTimeout(resolve,s));
}


async function getXml(){
let ans;
await delay(10000)
const {data} = await axios.get('https://gist.githubusercontent.com/SwayamShah97/a3619c5828ac8ed8085c4ae295a855d9/raw/e4e372552e042bd8bd9e8ab87da93eb030114f86/people.xml');
xml2js.parseString(data, (err, result) => {
    if(err) {
        throw err;
    }
    ans = result
    
});

I have tried to add the loader using frontend js like this:

window.addEventListener("load", function () {
    const loader = document.querySelector(".loader");
    loader.className += " hidden"; // class "loader hidden"
});

HTML:

<div class="loader">
    <img src="/public/images/coffee-loading.gif" alt="Loading..." />
</div>

CSS:

.loader.hidden {
    animation: fadeOut 10s;
    animation-fill-mode: forwards;
}

@keyframes fadeOut {
    100% {
        opacity: 0;
        visibility: hidden;
    }
} 

How it works is, it waits 10s as it should due to the setTimeout, and then shows the preloader for additional 10s instead of aligning with the delay.

How can I achieve this functionality?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

等数载,海棠开 2025-01-17 02:32:15
animation-delay: 10s;

我应该指出,这在用户体验方面非常糟糕,除非您计划减少这些计时器。

animation-delay: 10s;

I should note that this is pretty bad in terms of user experience unless you plan on reducing those timers.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文