Jump to content

zeitverzögerter Aufruf einer Funktion


Othello

Recommended Posts

Eine Frage in die Runde, gibt es in FlyWithLua die Möglichkeit, eine Funktion nach einem Delay genau nur einmal aufzurufen?

 

Also so etwas wie:  call_once_after(functionname, 3) -- delay in Sekunden als Argument

 

Gruß

Othello

 

 

 

EDIT:

 

oder so etwas wie unlist()

 

Meine Idee:

 

local handle = -1

 

function myfunction()
  ...

  unlist(handle)
end

 

handle = do_sometimes(myfunction)

Link to comment
Share on other sites

Edit geht leider nicht mehr.

 

Das handle könnte auch weggelassen werden:

 

do_sometimes(myfunction)

unregister(myfunction)

 

Link to comment
Share on other sites

  • 2 weeks later...

Hinter do_sometimes() versteckt sich eine Zeichenkette (ein String). Es ist keine Liste oder Verkettung, wo man einzelne Elemente wieder herausnehmen könnte. Wenn du ein Debug File erzeugen lässt kannst du den Inhalt der Zeichenketten nachsehen.

 

Eine Lösung wäre mit einer Boolean Variable zu arbeiten.

 

my_function_is_active = true

function my_function()
  -- do something useful
end

do_sometimes("if my_function_is_active then my_function() end")

...

my_function_is_active = false   -- unregister

 

Link to comment
Share on other sites

Diese Variable müsste ich dann in meinem Script abfragen, richtig?

Wenn ja, dann ist es das übliche Vorgehen.

 

Ich kenne viele Scripte, welche Funktionen aufrufen lassen, nur damit die Funktion dann feststellt, dass sie nichts mehr tun muss/möchte.

Ziemlich viel (in der Summe der Funktionen) Aufwand für eigentlich nichts.

Da wäre eine Verbesserung, die Funktion erst gar nicht zu rufen, also ein echtes "unregister".

 

Liese sich das nicht realisieren (verkettete Liste etc.) ?

 

Gruß

Othello

 

Edit:

Ich glaube, ich habe eben erst verstanden, was du mit der Stringrepräsentation meinst.

Ich habe noch nicht nachgesachaut, wie das im Debugfile aussieht, das werde ich gleich nachholen.

Vermutlich ist der Overhead noch größer, als ich dachte :-)

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy & Terms of Use