Как поставить задержку на цикл в Ruby?
например, если я хочу сделать таймер, как мне сделать задержку в цикле, чтобы он считался в секундах, а не просто цикл через миллисекунду?
2 ответов
"комментарий" выше - это ваш ответ, учитывая очень простой прямой вопрос, который вы задали:
1.upto(5) do |n|
puts n
sleep 1 # second
end
возможно, вы хотите периодически запускать метод, не блокируя остальную часть кода. В этом случае вы хотите использовать поток (и, возможно, создать мьютекс, чтобы гарантировать, что две части кода не пытаются изменить одну и ту же структуру данных одновременно):
require 'thread'
items = []
one_at_a_time = Mutex.new
# Show the values every 5 seconds
Thread.new do
loop do
one_at_a_time.synchronize do
puts "Items are now: #{items.inspect}"
sleep 5
end
end
end
1000.times do
one_at_a_time.synchronize do
new_items = fetch_items_from_web
a.concat( new_items )
end
end