定时器
在js中,有两种定时器:
-
倒计时定时器
倒计时定时器,也叫延时定时器或一次性定时器
功能:倒计时多长时间后执行某个动作
语法:setTimeout(function, timeout);
返回值:int类型,当前定时器是页面的第几个定时器,就返回几
执行频率:只执行一次var timer2 = setTimeout (function(){
console.log("倒计时定时器执行了"); // 2秒后执行,仅执行一次
}, 2000); -
间隔定时器
间隔定时器,也叫反复性定时器或间歇性定时器
功能:每间隔多长时间就执行某个动作
语法:setInterval(function, timeout);
返回值:int类型,当前定时器是页面的第几个定时器,就返回几
执行频率:只要不关闭,会一直执行var timer2 = setInterval(function(){
console.log("间隔定时器执行了"); // 每隔2秒执行一次
}, 2000); -
实践应用
在PC端扫码支付的时候,可以通过倒计时定时器和间隔定时器来实现对订单支付状态的感知。比起通过websocket双向通信,更简单,几行代码就可以搞定// 倒计时定时器,假设支付订单失效时间是5分钟,那么设置一个倒计时定时器,从发起支付后开始倒时间,超过5分钟后,支付失败,跳转到订单明细页面
setTimeout(function () {
window.location.href = '订单明细页面';
}, 300000);
// 间隔定时器,每间隔2秒查询一次订单支付状态,若订单支付成功,跳转到订单明细页面
setInterval(function() {
$.ajax({
url: '查询订单支付状态',
type: 'get',
dataType: 'json',
data: {order_id: order_id},
success: function (data) {
if (data === 1) {
window.location.href = '订单明细页面';
}
}
})
}, 2000);