我只是想知道,红宝石中是否存在链接概念。 我想一个接一个地执行一系列异步任务或方法。有可能吗?
谢谢, 拉维
答案 0 :(得分:1)
您可能想要创建一个流程类,例如:
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
答案 1 :(得分:0)
最初引入Promises的Javascript也是同步的,它在最严格的意义上保证是对回调的抽象
有用于Ruby的并发库,其中一些库在一定程度上体现了Promises的精神,谷歌搜索pod install
会产生一些有希望的结果:
https://github.com/lgierth/promise.rb https://github.com/ruby-concurrency/concurrent-ruby
也许这些不是惯用的红宝石,但它们确实提供了一些有用的范例
答案 2 :(得分:0)
据我所知,promise.rb
是遵循js Promise / A +标准的异步机制最常用的宝石。
本文在介绍它方面做得不错:https://medium.com/@gauravbasti2006/lets-keep-our-promise-in-ruby-e45925182fdc