在单击一个插槽时,我更改插槽的内容以提供用户反馈,然后调用一些代码,运行几秒钟。然而,对插槽的更改直到“慢”过程完成之后才呈现。有没有什么方法可以强制渲染发生在'慢'代码运行之前。
在下面的示例中,用户永远不会看到“正在处理,请等待...”
class MyTest < Shoes
url '/', :index
url '/result', :result
def index
stack do
my_button=flow do
image './assets/trees.jpg'
para 'Process Image'
end
my_button.click do
my_button.contents[0].hide
my_button.contents[1].text="Processing, please wait ..."
sleep(4) # Simulate slow process
visit '/result'
end
end
end
def result
stack do
para "Finished processing"
end
end
end
Shoes.app
浏览ruby. c或canvas. c中的Shoes源代码,可以找到对repaint或paint canvas的引用。它们能从鞋子里叫出来吗?
先谢谢你了
2条答案
按热度按时间li9yvcax1#
这有点像黑客,但你可以把实际的逻辑移动到一个单独的函数中,像这样:
并使用
timer
在单独的线程中运行它:kupeojn62#
谢谢,这是一种享受.我还使用Threads制定了一个解决方案:
这两种解决方案似乎都能按预期工作。