3.12. Periodyczne wykonywanie bloku kodu
Problem
Chcemy periodycznie, w równych odstępach czasu, wykonywać pewien fragment kodu, na przykład wywołanie polecenia powłoki.
Rozwiązanie
Należy stworzyć metodę powodującą uruchomienie bloku, a po jego zakończeniu zawieszenie wykonania na odpowiedni okres.
def every_n_seconds(n) loop do before = Time.now yield interval = n-(Time.now-before) sleep(interval) if interval > 0 end end every_n_seconds(5) do puts "Zegar wskazuje #{Time.now.strftime("%X")}... beep!" end # Zegar wskazuje 17:37:38... beep! # Zegar wskazuje 17:37:43... beep! # Zegar wskazuje 17:37:48... beep! # Zegar wskazuje 17:37:53... beep! # Zegar wskazuje 17:37:58... beep! # Zegar wskazuje 17:38:03... beep! # ...
Dyskusja
Get Ruby. Receptury now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.