我正在通过 REST 调用加载数据并呈现它。之后,我正在调用另一个 REST API,这大约需要 10 秒。在这段时间里,我不能再进行一次 REST 调用,直到这个调用完成。我的问题是,我该怎么做?
我尝试使用线程,但它不起作用,也许我做错了什么,或者线程不是正确的选择?
这是被调用的路线:
get '/api/dashboard/:dbnum/block/:blnum/inbackground/:inbackground' do
user = get_current_userobject
return assemble_error('LOGIN', 'NOTLOGGEDIN', {}, []).rest_fail if !user
dbnum,blnum = params[:dbnum].to_i, params[:blnum].to_i
return { rows: [] }.rest_success if !user.dashboardinfo || !user.dashboardinfo[dbnum] || !user.dashboardinfo[dbnum]['blocks'] || !(block = user.dashboardinfo[dbnum]['blocks'][blnum]) || !respond_to?("dashboard_type_#{block['type']}", true)
if params[:inbackground] == 'true'
t = Thread.new do
t.priority= -1
ret = method("dashboard_type_#{block['type']}").call(block['filters'], false, true)
ret.rest_success
end
t.join
t.exit
else
ret = method("dashboard_type_#{block['type']}").call(block['filters'], false, false)
ret.rest_success
end
end
如何在“后台”的第 8 行到第 22 行内运行代码,以便其他调用具有优先级?