Доступна ли концепция обещаний в ruby? - PullRequest
0 голосов
/ 12 июня 2018

Мне просто интересно, есть ли в ruby ​​концепция сцепления?Я хотел выполнить ряд асинхронных задач или методов один за другим.Возможно ли это?

Спасибо, Рави

1 Ответ

0 голосов
/ 13 июня 2018

Возможно, вы захотите создать класс процесса, что-то вроде:

class MyProcess

  PROCESS_STEPS = %w(
    step_one
    step_two
    step_three
  )

  class << self 

    def next_step
      new.next_step
    end

  end # Class Methods

  #======================================================================
  # Instance Methods
  #======================================================================

    def next_step
      PROCESS_STEPS.each do |process_step|
        send(process_step) if send("do_#{process_step}?")
      end
    end

    def step_one
      # execute step one task
    end

    def do_step_one?
      # some logic
    end

    def step_two
      # execute step two task
    end

    def do_step_two?
      # some logic
    end

    def step_three
      # execute step three task
    end

    def do_step_three?
      # some logic
    end

end

Возможно, вы поместите это в:

app 
 |- processes
 |   |- my_process.rb

Затем в конце каждой задачи выполнитечто-то вроде:

MyProcess.next_step 
...