0

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 秒間停止します。

私のコードで何が問題になっていますか?

4

1 に答える 1