class EMPromise::Trampoline
Attributes
ready[RW]
Public Class Methods
new()
click to toggle source
# File lib/em_promise.rb, line 11 def initialize @ready = true @fiber = Fiber.new do |blk| Thread.current[:_em_promise_trampoline] = self loop do result = blk.call self.ready = true blk = Fiber.yield result self.ready = false end end end
Public Instance Methods
submit(&blk)
click to toggle source
# File lib/em_promise.rb, line 24 def submit(&blk) EM.next_tick do if ready @fiber.resume(blk) else submit(&blk) end end end