在線做文檔的網(wǎng)站百度推廣登錄官網(wǎng)
定時器
在js中,有兩種定時器:
- 倒計時定時器
倒計時定時器,也叫延時定時器或一次性定時器
功能:倒計時多長時間后執(zhí)行某個動作
語法:setTimeout(function, timeout);
返回值:int類型,當(dāng)前定時器是頁面的第幾個定時器,就返回幾
執(zhí)行頻率:只執(zhí)行一次
var timer2 = setTimeout (function(){console.log("倒計時定時器執(zhí)行了"); // 2秒后執(zhí)行,僅執(zhí)行一次
}, 2000);
- 間隔定時器
間隔定時器,也叫反復(fù)性定時器或間歇性定時器
功能:每間隔多長時間就執(zhí)行某個動作
語法:setInterval(function, timeout);
返回值:int類型,當(dāng)前定時器是頁面的第幾個定時器,就返回幾
執(zhí)行頻率:只要不關(guān)閉,會一直執(zhí)行
var timer2 = setInterval(function(){console.log("間隔定時器執(zhí)行了"); // 每隔2秒執(zhí)行一次
}, 2000);
- 實(shí)踐應(yīng)用
在PC端掃碼支付的時候,可以通過倒計時定時器和間隔定時器來實(shí)現(xiàn)對訂單支付狀態(tài)的感知。比起通過websocket雙向通信,更簡單,幾行代碼就可以搞定
// 倒計時定時器,假設(shè)支付訂單失效時間是5分鐘,那么設(shè)置一個倒計時定時器,從發(fā)起支付后開始倒時間,超過5分鐘后,支付失敗,跳轉(zhuǎn)到訂單明細(xì)頁面setTimeout(function () {window.location.href = '訂單明細(xì)頁面';}, 300000);
// 間隔定時器,每間隔2秒查詢一次訂單支付狀態(tài),若訂單支付成功,跳轉(zhuǎn)到訂單明細(xì)頁面
setInterval(function() {$.ajax({url: '查詢訂單支付狀態(tài)',type: 'get',dataType: 'json',data: {order_id: order_id},success: function (data) {if (data === 1) {window.location.href = '訂單明細(xì)頁面‘;}}})
}, 2000);