Module: Puppeteer::ConcurrentRubyUtils
- Defined in:
- lib/puppeteer/concurrent_ruby_utils.rb
Overview
utility methods for Concurrent::Promises.
Instance Method Summary collapse
-
#await(future_or_value) ⇒ Object
blocking get value of Future.
-
#await_all(*args) ⇒ Object
wait for all promises.
-
#await_any(*args) ⇒ Object
wait for first promises.
- #future(*args, &block) ⇒ Object
- #resolvable_future(&block) ⇒ Object
Instance Method Details
#await(future_or_value) ⇒ Object
blocking get value of Future.
34 35 36 37 38 39 40 |
# File 'lib/puppeteer/concurrent_ruby_utils.rb', line 34 def await(future_or_value) if future_or_value.is_a?(Concurrent::Promises::Future) future_or_value.value! else future_or_value end end |
#await_all(*args) ⇒ Object
wait for all promises. REMARK: This method doesn't assure the order of calling. for example, await_all(async1, async2) calls calls2 -> calls1 often.
6 7 8 9 10 11 12 13 14 15 16 |
# File 'lib/puppeteer/concurrent_ruby_utils.rb', line 6 def await_all(*args) if args.length == 1 && args.first.is_a?(Enumerable) await_all(*args.first) else if args.any? { |arg| !arg.is_a?(Concurrent::Promises::Future) } raise ArgumentError.new("All argument must be a Future: #{args}") end Concurrent::Promises.zip(*args).value! end end |
#await_any(*args) ⇒ Object
wait for first promises. REMARK: This method doesn't assure the order of calling. for example, await_all(async1, async2) calls calls2 -> calls1 often.
21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/puppeteer/concurrent_ruby_utils.rb', line 21 def await_any(*args) if args.length == 1 && args.first.is_a?(Enumerable) await_any(*args.first) else if args.any? { |arg| !arg.is_a?(Concurrent::Promises::Future) } raise ArgumentError.new("All argument must be a Future: #{args}") end Concurrent::Promises.any(*args).value! end end |
#future(*args, &block) ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/puppeteer/concurrent_ruby_utils.rb', line 42 def future(*args, &block) Concurrent::Promises.future(*args) do |*block_args| block.call(*block_args) rescue Puppeteer::TimeoutError # suppress error logging raise rescue => err Logger.new($stderr).warn(err) raise err end end |