setTimeout && setInterval

xuanxuanQueen發表於2019-08-03
/*
*定時器應用函式
*安排函式f()在未來的呼叫模式
*在等待了若干毫秒之後呼叫f()
*如果設定了interval並沒有設定end引數,則對f()呼叫將不會停止
*如果沒有設定interval和end,只在若干毫秒後呼叫f()一次
*只有指定了f(),才會從start=0的時刻開始
*注意,呼叫invoke()不會阻塞,它會立即返回
*@param {函式} f 傳遞的函式
*@param {num} start 指定函式開始呼叫的時間
*@param {num} interval 指定函式重複呼叫的時間
*@param {num} end 指定函式結束的時間
*/
function invoke(f, start, interval, end) {
    if (!start) start = 0;
    if (arguments.length <= 2)
        setTimeout(f, start);
    else {
        setTimeout(repeat,start);
        function repeat() {
            var h = setInterval(f, interval);
            if (end) setTimeout(function() {clearInterval(h);},end);
        }
    }
}
  • setTimeout()實現一個函式在指定的毫秒數之後執行,返回一個值,這個值可以傳遞給clearTimeout()用於取消這個函式的執行。
  • setInterval()實現一個函式在指定的毫秒數的間隔裡重複呼叫,返回一個值,這個值可以傳遞給clearInterval()用於取消這個函式的執行。
  • 這兩個函式是客戶端javascript中的全域性函式,window物件的方法。
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章