跳至内容 跳至搜索
方法
P
T
V

实例公共方法

pending?()

返回关联查询是否仍在执行。

# File activerecord/lib/active_record/promise.rb, line 13
def pending?
  @future_result.pending?
end

then(&block)

返回一个新的 ActiveRecord::Promise,该 Promise 在访问值时将应用传递的代码块。

Post.async_pick(:title).then { |title| title.upcase }.value
# => "POST TITLE"
# File activerecord/lib/active_record/promise.rb, line 36
def then(&block)
  Promise.new(@future_result, @block ? @block >> block : block)
end

value()

返回查询结果。如果查询尚未完成,访问 #value 将阻塞直到查询完成。如果查询失败,#value 将引发相应的错误。

# File activerecord/lib/active_record/promise.rb, line 20
def value
  return @value if defined? @value

  result = @future_result.result
  @value = if @block
    @block.call(result)
  else
    result
  end
end