私はいくつかのブロッキング ライブラリ/操作を EventMachine 内に統合しようとしています。EM::Deferrable を含むクラス内にそのようなコードをカプセル化することを検討しました。そのようなコードを Deerrable オブジェクトに含めることは理にかなっていますか?
class Whatever
include EM::Deferrable
def some_operation
result = some_blocking_operations
if result.considered_success?
succeed(result)
else
fail(result)
end
end
end
または私はただ固執する必要があります:
op = lambda do
result = some_blocking_operations
end
cb = lambda do |res|
# do some kind of if here to check if it's success or failure
end
EM.defer(op,cb)
個人的には、最初の方が読みやすいので、最初の方が好きです。そのような場合に deerrable を実装するのは理にかなっていますか?