File tree Expand file tree Collapse file tree 2 files changed +32
-0
lines changed Expand file tree Collapse file tree 2 files changed +32
-0
lines changed Original file line number Diff line number Diff line change @@ -16,6 +16,32 @@ def then_ask(actor)
16
16
end
17
17
18
18
include ActorIntegration
19
+
20
+ # @!macro warn.edge
21
+ module FlatShortcuts
22
+
23
+ def then_flat_future ( *args , &block )
24
+ self . then ( *args , &block ) . flat_future
25
+ end
26
+
27
+ alias_method :then_flat , :then_flat_future
28
+
29
+ def then_flat_future_on ( executor , *args , &block )
30
+ self . then_on ( executor , *args , &block ) . flat_future
31
+ end
32
+
33
+ alias_method :then_flat_on , :then_flat_future_on
34
+
35
+ def then_flat_event ( *args , &block )
36
+ self . then ( *args , &block ) . flat_event
37
+ end
38
+
39
+ def then_flat_event_on ( executor , *args , &block )
40
+ self . then_on ( executor , *args , &block ) . flat_event
41
+ end
42
+ end
43
+
44
+ include FlatShortcuts
19
45
end
20
46
21
47
class Channel < Concurrent ::Synchronization ::Object
Original file line number Diff line number Diff line change @@ -445,6 +445,12 @@ def behaves_as_delay(delay, value)
445
445
expect ( ::Array . new ( 3 ) { |i | Concurrent ::Promises . delay { i } } .
446
446
inject { |a , b | a . then { b } . flat } . value! ( 0.2 ) ) . to eq 2
447
447
end
448
+
449
+ it 'has shortcuts' do
450
+ expect ( fulfilled_future ( 1 ) . then_flat { |v | future ( v ) { v + 1 } } . value! ) . to eq 2
451
+ expect ( fulfilled_future ( 1 ) . then_flat_event { |v | resolved_event } . wait . resolved? ) . to eq true
452
+ expect ( fulfilled_future ( 1 ) . then_flat_on ( :fast ) { |v | future ( v ) { v + 1 } } . value! ) . to eq 2
453
+ end
448
454
end
449
455
450
456
it 'resolves future when Exception raised' do
You can’t perform that action at this time.
0 commit comments