Ruby のスレッドに問題があります。Threadsを使うのは初めてなので、重要なことを省略しているかもしれません。
私はこの手順を持っています:
def define_action(field)
false if field.nil? || field.empty?
puts field.empty? <---- ONLY FOR DEBUG
case field['special']
when 'signpost'
typewriter_animation(field['message'])
else
typewriter_animation("TO DO ... add action for #{field['special']}")
end
end
typewriter_animation
フィールドをきれいにし、テキストを入力し、5 秒待ってから再びフィールドをクリアします。
define_action
スレッドで使用します
@timer = Thread.new do
@engine.define_action(@map.next_field_coordinates)
end
いつfield
(プロンプトにempty
表示true
されます)結果として何も除外されませんが、手順は続行され、画面に「TO DO ... add action for」と表示されます
スレッドなしの同じコードは完全に機能しますが、明らかに画面を 5 秒間停止します。
私のコードで何が問題になっていますか?