gpt4 book ai didi

ruby - EventMachine 可延迟回调链

转载 作者:太空宇宙 更新时间:2023-11-03 18:23:11 24 4
gpt4 key购买 nike

我有一些 Deferrables,当它们全部完成时我需要在回调中做一些事情。

defers[0].callback do
defers[1].callback do
defers[2].callback do
yield if block_given?
end
end
end

但这非常丑陋,我必须知道必要回调的确切数量。我怎样才能以更简洁的方式编写它?

就像在 jQuery 中一样,$.when 允许传递一组 $.Deferred 对象,这太棒了,我可以在 Ruby 中实现吗?

$.when(defers).done(function() {
// do something
})

由于使用了不兼容的库,我无法使用 em-synchrony。


解决方法:

multi = EventMachine::MultiRequest.new
defers.each.with_index do |defer, i|
multi.add(i, defer)
end
multi.callback do
yield if block_given?
end

最佳答案

如果您正在使用 em-http-request gem,您可以使用 EventMachine::MultiRequest .

如果没有,实现起来很容易em-http-request / lib / em-http / multi.rb所以自己做。

关于ruby - EventMachine 可延迟回调链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14697737/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com