📜  如何在继续使用 JavaScript 之前添加睡眠等待函数?(1)

📅  最后修改于: 2023-12-03 15:38:41.648000             🧑  作者: Mango

如何在继续使用 JavaScript 之前添加睡眠等待函数?

在编写 JavaScript 代码时,有时需要添加一些等待时间的功能,比如原生 JS 不支持像 Python 一样的 sleep() 函数,这时我们可以通过使用 setTimeout() 或 Promise 来实现等待效果。

使用 setTimeout() 函数

setTimeout() 函数是 JavaScript 的一个内置函数,它允许我们在一定的时间后执行代码。我们可以利用这个函数来实现等待效果。

function sleep(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}

async function main() {
    console.log('start');
    await sleep(2000);
    console.log('end');
}

main();

上面的代码中,我们定义了一个 sleep() 函数,该函数返回一个 Promise 对象。在 main() 函数中,我们使用 await 来等待 sleep() 函数返回的 Promise 对象。

使用 setTimeout() 函数的优点在于我们可以精确地控制等待时间,但缺点是无法保证等待时间的精确性,因为 JavaScript 是单线程执行的语言,可能存在其它任务在等待队列中。

使用 Promise 封装 setTimeout() 函数

我们还可以使用 Promise 封装 setTimeout() 函数,这样代码将更易于阅读和维护。

function sleep(ms) {
    return new Promise(resolve => {
        setTimeout(() => {
            resolve();
        }, ms);
    });
}

async function main() {
    console.log('start');
    await sleep(2000);
    console.log('end');
}

main();

上面的代码中,我们定义了一个 Promise,这个 Promise 在一定时间后 resolve()。在 main() 函数中,我们使用 await 来等待 Promise 对象。

使用 Promise 封装 setTimeout() 函数的优点在于代码更易于阅读和维护,缺点在于代码量比使用 setTimeout() 函数多一些。

总之,在继续使用 JavaScript 之前添加睡眠等待函数,我们可以使用 setTimeout() 或 Promise 来实现等待效果,具体使用哪种方法取决于实际情况。