Sha256: b65851dedf6d55cc9ae06cdc69d177296e7570605296359d7be7270829666d5d
Contents?: true
Size: 625 Bytes
Versions: 1
Compression:
Stored size: 625 Bytes
Contents
# Referenced from {Qiita}[http://qiita.com/south37/items/99a60345b22ef395d424] class Promise def initialize(callback) @callback = callback end def then(resolve = ->() {}, reject = ->() {}) @callback.call(resolve, reject) end end def async_internal(fiber) chain = ->(result) { return if result.class != Promise result.then(->(val) { chain.call(fiber.resume(val)) }) } chain.call(fiber.resume) end def async(method_name, &block) define_singleton_method method_name, ->(*args) { async_internal(Fiber.new {block.call(*args)}) } end def await(promise) Fiber.yield promise end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
em-midori-0.0.9.2 | lib/em-midori/promise.rb |