Multithreading GWT-刷新页面上的元素
嗨,我周末和GWT一起玩,我真的很喜欢我所看到的 目前为止我有两个问题:Multithreading GWT-刷新页面上的元素,multithreading,gwt,Multithreading,Gwt,嗨,我周末和GWT一起玩,我真的很喜欢我所看到的 目前为止我有两个问题: 我不太了解我的应用程序的执行模式。我想 那是因为我不懂javascript。我假设有 运行javascript的浏览器中只有一个逻辑线程,并且 是更新显示的同一线程(忽略异步 请求)。因此,当我通过js向一个框架添加50个元素时 将所有图元添加到框架后,将显示这些图元。在里面 换句话说,在js完成执行之后。我有吗 正确的?有关于这个话题的文章吗 抱歉,这不是一个很好的例子,但它可能会回答我的问题 穿过在以下情况下(设计),
慢速脚本警告
(请参阅下一点)
To 2):查看IncrementalCommand
类(描述了它的用法)。使用它,您可以将长时间运行的操作划分为小块较小的工作,并向用户显示进度更新。一个小例子:
public class Starter implements EntryPoint {
private Label text = new Label();
private Label update = new Label();
@Override
public void onModuleLoad() {
Button btn = new Button("hit me");
btn.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
text.setText("starting...");
startIncrementalWork();
}
});
RootPanel.get().add(text);
RootPanel.get().add(update);
RootPanel.get().add(btn);
}
private void startIncrementalWork() {
IncrementalCommand cmd = new IncrementalCommand() {
private int count = 0;
@Override
public boolean execute() {
if (count >= 10000) {
text.setText("finished");
return false;
}
for (int i = 0; i < 100; i++) {
update.setText("count " + count);
count++;
}
return true;
}
};
DeferredCommand.addCommand(cmd);
}
}
公共类启动程序实现入口点{
私有标签文本=新标签();
私有标签更新=新标签();
@凌驾
moduleload()上的公共void{
按钮btn=新按钮(“点击我”);
btn.addClickHandler(新的ClickHandler(){
@凌驾
公共作废一次点击(点击事件){
setText(“开始…”);
开始基本工作();
}
});
RootPanel.get().add(文本);
RootPanel.get().add(更新);
RootPanel.get().add(btn);
}
私人无效开始补充工作(){
IncrementalCommand cmd=新的IncrementalCommand(){
私有整数计数=0;
@凌驾
公共布尔执行(){
如果(计数>=10000){
text.setText(“完成”);
返回false;
}
对于(int i=0;i<100;i++){
update.setText(“计数”+计数);
计数++;
}
返回true;
}
};
DeferredCommand.addCommand(cmd);
}
}
希望有帮助