Skip to content

Instantly share code, notes, and snippets.

@acotie
Last active May 6, 2020 02:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save acotie/be8e6dfe2aee9c7778a1bdfc3867e08a to your computer and use it in GitHub Desktop.
Save acotie/be8e6dfe2aee9c7778a1bdfc3867e08a to your computer and use it in GitHub Desktop.
eventmachine defer sample.
require 'bundler/setup'
require 'eventmachine'
require 'open-uri'
EM.run do
puts "main: #{Thread.current}"
operation = proc {
puts "defer operation: #{Thread.current}"
sleep(20)
open('http://google.co.jp/').status
//raise "errrrrrooooooorrrrrr" ## raise error
}
callback = proc {|result|
puts '--- callback # ------------------------------------------------------------------------------'
puts "defer callback: #{result}"
puts "defer callback: #{Thread.current}"
EM.stop
}
errorback = proc {|error|
puts '--- error # ------------------------------------------------------------------------------'
#puts "defer error: #{error}"
puts "defer error: #{error}"
puts "defer error: #{Thread.current}"
EM.stop
}
puts '--- calling defer'
EM.defer(operation, callback, errorback)
puts '--- called defer'
end
main: #<Thread:0x007ffe3a8bc3c0>
--- calling defer
--- called defer
defer operation: #<Thread:0x007ffe3b136cd0>
--- callback # ------------------------------------------------------------------------------
defer callback: ["200", "OK"]
defer callback: #<Thread:0x007ffe3a8bc3c0>
main: #<Thread:0x007fb3e40bc3a0>
--- calling defer
--- called defer
defer operation: #<Thread:0x007fb3e427ae80>
--- error # ------------------------------------------------------------------------------
defer error: errrrrrooooooorrrrrr
defer error: #<Thread:0x007fb3e40bc3a0>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment