javascript setTimeout函数的异步实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript setTimeout函数的异步实现相关的知识,希望对你有一定的参考价值。

const setAsyncTimeout = (cb, timeout = 0) => new Promise(resolve => {
    setTimeout(() => {
        cb();
        resolve();
    }, timeout);
});

// Instead of nesting setTimeout functions...
const doStuff = () => {
    setTimeout(() => {
        // Do stuff
    
        setTimeout(() => {
            // Do more stuff
    
            setTimeout(() => {
                // Do even more stuff
            }, 2000);
        }, 500);
    }, 1000);
};

doStuff();

// await them in an async function
const doStuffAsync = async () => {
    await setAsyncTimeout(() => {
        // Do stuff
    }, 1000);

    await setAsyncTimeout(() => {
        // Do more stuff
    }, 500);
    
    await setAsyncTimeout(() => {
        // Do even more stuff
    }, 2000);
};

doStuffAsync();

以上是关于javascript setTimeout函数的异步实现的主要内容,如果未能解决你的问题,请参考以下文章

setTimeout 函数执行代码没有任何延迟。 Javascript [重复]

在javascript中的另一个setTimeout函数中使用setTimeout

JavaScript 的setTimeout 和Angular中的$timeout的區別

JavaScript 函数 setTimeout() 和 setInterval() 有时不工作

javascript setTimeout函数的异步实现

javascript setTimeout错误函数