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! , #to_v2 , #trace , #trace! , #value , value , when
Constructor Details
#initialize(depth, block) ⇒ Trace
Returns a new instance of Trace.
367 368 369 370 371 372 373 374 375 376 377 378 379 380
# File 'opal/stdlib/promise.rb', line 367 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
352 353 354 355 356 357 358 359 360 361 362 363 364 365
# File 'opal/stdlib/promise.rb', line 352 def self.it(promise) current = [] if promise.act? || promise.prev.nil? current.push(promise.value) end prev = promise.prev if prev current.concat(it(prev)) else current end end