Module: Whenner
- Defined in:
- lib/whenner.rb,
lib/whenner/promise.rb,
lib/whenner/version.rb,
lib/whenner/callback.rb,
lib/whenner/deferred.rb,
lib/whenner/conversions.rb
Defined Under Namespace
Modules: Conversions Classes: Callback, CannotTransitionError, Deferred, Promise, UnresolvedError, WhennerError
Constant Summary collapse
- VERSION =
'0.1.1'
Class Method Summary collapse
-
.defer {|deferred| ... } ⇒ Promise
Create a new deferred, resolve it in the block and get its promise back.
-
.when(*promises) ⇒ Promise
Create a new deferred based that will resolve if/when the given promises are resolved.
Class Method Details
.defer {|deferred| ... } ⇒ Promise
Create a new deferred, resolve it in the block and get its promise back.
32 33 34 35 36 |
# File 'lib/whenner.rb', line 32 def defer deferred = Deferred.new yield deferred deferred.promise end |
.when(*promises) ⇒ Promise
Create a new deferred based that will resolve if/when the given promises are resolved. Use to combine multiple promises into a single deferred object.
When all the given promises are fulfilled, the resulting promise from
when if fulfilled with an array of all the values. When one of the given
promises is rejected, the resulting promise is rejected with that reason.
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/whenner.rb', line 48 def when(*promises) defer do |d| promises.each_with_object([]) do |promise, values| Conversions.Promise(promise).tap do |p| p.done do |value| values << value d.fulfill(values) if values.size == promises.size end p.fail do |reason| d.reject(reason) end end end end end |