WEB 教程
实践 示例
HTML 参考手册
CSS 参考手册
PHP 参考手册

如何在继续使用 JavaScript 之前休眠

主题:JavaScript / jQuery上一页|下一页

答案:使用setTimeout()方法

您可以简单地使用 setTimeout() 方法休眠或等待,然后继续在 JavaScript 中运行代码。 脚本执行的延迟时间以毫秒(千分之一秒)为单位指定。

让我们试试下面的例子来了解它的基本工作原理:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JavaScript Wait Before Continuing</title>
<script>
function doStuff(){
    // 暂停前运行的代码
    var hintDiv = document.getElementById("hint");
    hintDiv.insertAdjacentHTML('afterbegin', '<p>An alert will be shown in 3 seconds.</p>');
 
    setTimeout(function(){
        // 暂停后运行的代码
        alert("This is really slow!");
    }, 3000);
 
    // 这也将在警报之前运行
    hintDiv.insertAdjacentHTML('beforeend', '<p>Alert is coming. Please do not go!</p>');
}
</script>
</head>
<body>
    <div id="hint"></div>
    <button type="button" onclick="doStuff()">Run Script</button>
</body>
</html>

正如您在前面的示例中所注意到的,在 setTimeout() 方法之后的 JS 代码会继续执行。 然而,如果你想要一个真正的休眠,所有进一步的 JavaScript 代码执行都应该停止,你可以使用 Promise 构造函数。 让我们尝试一个示例,看看它是如何工作的:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JavaScript Sleep Between Execution</title>
<script>
async function doStuff(){
    // 休眠前运行的代码
    var hintDiv = document.getElementById("hint");
    hintDiv.insertAdjacentHTML('afterbegin', '<p>An alert will be shown in 3 seconds.</p>');
 
    // 休眠 3 秒
    await new Promise(r => setTimeout(r, 3000));
 
    // 休眠后运行的代码
    alert("This is really slow!");
    hintDiv.insertAdjacentHTML('beforeend', '<p>You have seen the alert. Goodbye!</p>');
}
</script>
</head>
<body>
    <div id="hint"></div>
    <button type="button" onclick="doStuff()">Run Script</button>
</body>
</html>

await 运算符用于等待 Promise。 它只能在 async 函数中使用。


FAQ 相关问题解答

以下是与此主题相关的更多常见问题解答:

Advertisements