lib/murasaki/event_loop.rb in murasaki-0.2.1 vs lib/murasaki/event_loop.rb in murasaki-0.2.1.1
- old
+ new
@@ -101,15 +101,16 @@
# Run timer once
# @return [nil] nil
def timer_once
now_time = Time.now.to_f
- @timers.delete_if do |timer|
- if timer.start_time < now_time
- timer.callback.call
- true
- end
+ callbacks = []
+ @timers.reject! do |timer|
+ ticked = timer.start_time < now_time
+ callbacks << timer.callback if ticked
+ ticked
end
+ callbacks.each { |c| c.call }
nil
end
# Start the event loop
# @return [nil] nil