6

我有一个非常简单的设置来测试 rails3 ActiveSupport::Notifications。通过阅读文档,该ActiveSupport::Notifications.subscribe位应该异步执行它的操作。显然情况并非如此。

例子:

ActiveSupport::Notifications.subscribe "some.channel" do |name, start, finish, id, payload|
  # do expensive task
  sleep(10)
end

ActiveSupport::Notifications.instrument "some.channel" #=> will return 10 seconds later

我的印象是ActiveSupport::Notifications.instrument "some.channel"会马上回来,让昂贵的任务去做昂贵的事情。否则我可以直接调用昂贵的任务,而不使用订阅者。

该文档还指出可能有多个订阅者。在那种情况下,我会被阻止,直到所有其他订阅者执行他们的代码。

这是正确的吗?如果是,有人可以解释一下http://api.rubyonrails.org/classes/ActiveSupport/Notifications.html中的这一行是什么意思吗?

The block will be called asynchronously whenever someone instruments “render”:

4

1 回答 1

14
于 2013-05-21T06:30:10.387 回答