Class: Promise::Trace
Instance Attribute Summary
Attributes inherited from Promise
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(depth, block) ⇒ Trace
constructor
A new instance of Trace.
Methods inherited from Promise
#<<, #>>, #^, #act?, #action, #always, #always!, error, #exception!, #exception?, #fail, #fail!, #inspect, #realized?, #reject, #reject!, #rejected?, #resolve, #resolve!, #resolved?, #then, #then!, #there_can_be_only_one!, #trace, #trace!, #value, value, when
Constructor Details
#initialize(depth, block) ⇒ Trace
Returns a new instance of Trace
353 354 355 356 357 358 359 360 361 362 363 364 365 366 |
# File 'opal/stdlib/promise.rb', line 353 def initialize(depth, block) @depth = depth super success: proc { trace = Trace.it(self).reverse trace.pop if depth && depth <= trace.length trace.shift(trace.length - depth) end block.call(*trace) } end |
Class Method Details
.it(promise) ⇒ Object
339 340 341 342 343 344 345 346 347 348 349 350 351 |
# File 'opal/stdlib/promise.rb', line 339 def self.it(promise) current = [] if promise.act? || promise.prev.nil? current.push(promise.value) end if prev = promise.prev current.concat(it(prev)) else current end end |