Callbackfunktion mit Übergabeparameter (Timer.Set) ?

Hinweis zur Nutzung von Skripten (für Nutzer)

Die Verwendung von Skripten erfolgt ausdrücklich auf eigene Gefahr. Weder Shelly noch die jeweiligen Autoren oder Entwickler der Skripte übernehmen irgendeine Form der Haftung für mögliche Schäden, Fehlfunktionen, Datenverluste oder anderweitige Beeinträchtigungen, die durch die Nutzung dieser Skripte entstehen könnten. Bitte stellen Sie vor dem Einsatz sicher, dass Sie den Quellcode verstehen und sich der möglichen Auswirkungen bewusst sind. Die Skripte werden ohne Gewähr bereitgestellt und unterliegen keiner regelmäßigen Wartung oder offiziellen Unterstützung.


Hinweis für Entwickler

Wenn Sie eigene Skripte bereitstellen, achten Sie bitte darauf, eine klare Beschreibung, eventuelle Einschränkungen und Sicherheitsaspekte zu dokumentieren. Beachten Sie zudem, dass Nutzer Ihre Skripte grundsätzlich auf eigenes Risiko verwenden. Eine Haftung für Schäden ist ausgeschlossen, sofern diese nicht vorsätzlich oder grob fahrlässig verursacht wurden oder gesetzlich anderweitig geregelt ist.

VPN/Proxy erkannt

Es scheint, dass Sie einen VPN- oder Proxy-Dienst verwenden. Bitte beachten Sie, dass die Nutzung eines solchen Dienstes die Funktionalität dieser Webseite einschränken kann.

  • Hallo zusammen,

    kann ich beim Timer.Set an die Callbackfuntion Parameter übergeben ?

    z.B.
    delayTimerHandlerSendMSG = Timer.set(Tms_send_Msg, false, fkt_send_message(strSub, strMsg));

    Oder muss ich die Übergabewerte global in dem Skript verwenden ?

    Danke zusammen.

    Grüße und ein Gutes, Neues Jahr.

    Patrick

  • Hi Patrick,

    das geht nur über nen kleinen Trick, in etwa so:

    Code
    function SendMSG(p){
        print("-->",p);
    }
    var tH1= 0;
    if(!tH1)tH1= Timer.set(1000, false, function(){SendMSG("Test");});

    Hier das ganze mal mit .bind()

    Code
    function SendMSG(p){
        print("-->",p);
    }
    
    var SendMsg_withVar= SendMSG.bind(null,"Test2")
    var tH1= 0;
    if(!tH1)tH1= Timer.set(1000, false, SendMsg_withVar);

    Hier das ganze über ne globale Variable:

    Code
    obj= {};
    function SendMSG(){
        print("-->",obj.p);
    }
    
    var tH1= 0;
    obj.p= "Test3"
    if(!tH1)tH1= Timer.set(1000, false, SendMSG);

    4 Mal editiert, zuletzt von _[Deleted]_ (2. Januar 2024 um 17:45)

  • Hallo @De kat,

    vielen Dank für Deine Hilfe.

    Hab das ohne .bind getestet, super funzt :thumbup:

    Dabei hab ich festgestellt,

    dass ich den Timestamp welchen ich übergebe, ja beim Funktionsaufruf erzeugen muss und nicht schon beim Timer.set.

    Ich Eumel.

    Auf alle Fälle hab ich wieder was von Dir gelernt.

    Nochmals Danke.

    Gruß

    Patrick