Mit JavaScript ein Intervall erstellen, das deine Skripte aufruft.

Marc Wag­ner

Novem­ber 10, 2020

2 min read|

Du möch­test Inhal­te dei­ner Web­sei­te erst zu einem gewis­sen Zeit­punkt ein­blen­den? Dann kannst du das schnell und unkom­pli­ziert mit Java­Script rea­li­sie­ren.

Der finale Code #

Falls du ein erfah­re­ner Web­ent­wick­ler bist und kei­ne lan­gen Erklä­run­gen benö­tigst, habe ich hier direkt den kom­plet­ten Code:

"use strict";

window['checktimer'] = function(date, intervalTime, onSuccess, onUpdate){
    let TimerInterval = null;
    let endDate = new Date(date);
    let calls = 0;

    TimerInterval = setInterval(function(){
        calls++;
        var startDate = new Date();

        var seconds = (endDate.getTime() - startDate.getTime()) / 1000;
        if(seconds <= 0){
            if(typeof(onSuccess) !== "undefined") {
                onSuccess(calls);
            }
            clearInterval(TimerInterval);
        }else{
            if(typeof(onUpdate) !== "undefined") {
                onUpdate(calls);
            }
        }
    }, intervalTime);
}

Pas­send dazu hier der Auf­ruf der Funk­ti­on damit du direkt los­le­gen kannst:

window.checktimer("2020-11-10 10:50:00", 1000, function(calls){
     # Called as soon as the Timestamp is reached
  }, function(calls){
     # Called whenever an Update has processed.
} );

Für alle ande­ren ange­hen­den Web­ent­wick­ler folgt jetzt eine kur­ze Erklä­rung. Du kannst übri­gens hier einen Code fin­den der in PHP zwei Datums­an­ga­ben ver­gleicht.

Die Erklärung zum JavaScript Code #

Zunächst erstel­len wir eine Funk­ti­on, die glo­bal gül­tig ist, in dem wir die­se im Gel­tungs­be­reich des Fens­ters defi­nie­ren.

window['checktimer'] = function(date, intervalTime, onSuccess, onUpdate){}

Die Funk­ti­on soll dabei vier Para­me­ter ent­ge­gen­neh­men die wir benö­ti­gen, um etwas Fle­xi­bi­li­tät zu ermög­li­chen:

dateDas Datum im For­mat YYYY-MM-DD HH:ii:ss
zB.: “2020–11–10 10:50:00”
inter­val­Ti­meDie Mil­li­se­kun­den wie häu­fig das Datum geprüft wird.
onSuc­cessEine Call­back Funk­ti­on die auf­ge­ru­fen wird, wenn das gewünsch­te Datum erreicht wur­de.
onUp­dateEine Call­back Funk­ti­on die auf­ge­ru­fen wird, wenn das Datum geprüft wur­de.
Para­me­ter der Funk­ti­on.

Direkt am Anfang dekla­rie­ren wir dann unse­re Wer­te, die nur für die Funk­ti­on selbst gebraucht wer­den, aber die von außen nicht ver­än­dert wer­den sol­len.

let TimerInterval = null; // store the interval object
let endDate = new Date(date); // store the date object
let calls = 0; // calls done till the date is reached

Mit den Wer­ten erstel­len wir anschlie­ßend das Inter­vall, um in regel­mä­ßi­gen Abstän­den zu prü­fen, ob das Ziel­da­tum erreicht wur­de.

TimerInterval = setInterval(function(){
    calls++;
    var startDate = new Date();

    var seconds = (endDate.getTime() - startDate.getTime()) / 1000;
    if(seconds <= 0){
        if(typeof(onSuccess) !== "undefined") {
            onSuccess(calls);
        }
        clearInterval(TimerInterval);
    }else{
        if(typeof(onUpdate) !== "undefined") {
            onUpdate(calls);
        }
    }
}, intervalTime);

Sobald das der Fall ist, wech­seln die Sekun­den von einer posi­ti­ven Ganz­zahl ins nega­ti­ve, wes­we­gen wir das Inter­vall been­den und die defi­nier­te “onSuc­cess” Call­back Funk­ti­on auf­ru­fen kön­nen.

Fazit #

Das Berech­nen der Dif­fe­renz zwi­schen zwei Datums­an­ga­ben in Sekun­den ist mit Java­Script leicht mög­lich. Durch das Aus­la­gern der Funk­ti­on und der Über­ga­be von Call­back Funk­tio­nen lässt sich ein sau­be­rer, wie­der ver­wend­ba­rer Code erstel­len der auf jeder belie­bi­gen Web­sei­te und Web­an­wen­dung ein­ge­baut wer­den kann.

Ich hof­fe, der Bei­trag hilft dir bei dei­nem Pro­jekt. Falls du Fra­gen hast oder Feed­back geben möch­test, kannst du ger­ne einen Kom­men­tar hin­ter­las­sen.

88e86fcb816eff22bc917094df2862d8dd5c0e978b333e6dd5f36f808990c261 96

Arti­kel von:

Marc Wag­ner

Hal­lo, Marc hier. Ich bin der Grün­der von Forge12 Inter­ac­ti­ve und bereits seit über 20 Jah­ren lei­den­schaft­lich dabei Web­sei­ten, Online­shops, Anwen­dun­gen und SaaS-Lösun­gen für Unter­neh­men zu ent­wi­ckeln. Vor der Grün­dung habe ich bereits in Bör­sen notier­ten Unter­neh­men gear­bei­tet und mir aller­lei Wis­sen ange­eig­net. Die­ses Wis­sen möch­te ich nun an mei­ne Kun­den wei­ter­ge­ben.

Hast du eine Fra­ge? Hin­ter­lass bit­te einen Kom­men­tar