JS 倒计时定时器

581 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

在我们项目中经常会遇到倒计时的业务需求,比如发送短信验证码60秒倒计时,下面我们用JavaScript Promise 来实现60秒倒计时,代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>倒计时定时器</title>
</head>

<style>
    .main {
        display: flex;
        flex-direction: row;
        justify-content: center;
        align-items: center;
    }

    #timer {
        width: 100px;
    }
</style>

<body>
    <div class="main">
        <div id="timer"></div>
        <a href="javascript:;" id="startBtn">开始</a>
    </div>
    <script>
        let startBtn = document.getElementById('startBtn');
        let timerNode = document.getElementById('timer');
        let senond = 0
        function timer() {
            startBtn.style = "display:none";
            senond = 60;
            timerNode.innerText = senond;
            let promise = new Promise((resolve, reject) => {
                let setTimer = setInterval(() => {

                    senond--;
                    timerNode.innerText = senond;
                    console.log(senond);

                    if (senond <= 0) {
                        resolve(setTimer);
                        startBtn.style = "display:block";
                    }
                }, 1000);
            });
            promise.then((setTimer) => {
                clearInterval(setTimer);
            });
        }


        startBtn.addEventListener('click', timer, false);
    </script>
</body>

</html>