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, error, #exception!, #exception?, #fail, #inspect, #realized?, #reject, #reject!, #rejected?, #resolve, #resolve!, #resolved?, #then, #trace, value, #value, when
Constructor Details
#initialize(depth, block) ⇒ Trace
Returns a new instance of Trace
338 339 340 341 342 343 344 345 346 347 348 349 350 351 |
# File 'opal/stdlib/promise.rb', line 338 def initialize(depth, block) @depth = depth super success: -> { 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
324 325 326 327 328 329 330 331 332 333 334 335 336 |
# File 'opal/stdlib/promise.rb', line 324 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 |