本文已参与「新人创作礼」活动,一起开启掘金创作之路。
在我们项目中经常会遇到倒计时的业务需求,比如发送短信验证码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>