java - 使用 GWT 计时器在循环中延迟

标签 java gwt

我正在研究 GWT + JAVA。

我在 GWT 中有一段代码如下

static int DELAY = 1000;

private void downloadAttachments(final List<String> ftIdList) 
{
   try
   {
      Timer timer = new Timer() 
      {
         @Override
         public void run() 
         {
            int cnt = 1;
            for (String url: ftIdList)
            {
               String windowName = "win" + cnt;
               Window.open(url, windowName, "");
               cnt++;
               scheduleRepeating(DELAY*2);
            }
            cancel();
         }
      };
      timer.run();
   }
   catch (Throwable exc) 
   {
      Window.alert(exc.getMessage());
   }
} 

我需要打开几个窗口以允许用户下载所有文件。

我正在调用一个 Servlet。

如何在循环中引入延迟直到下一次迭代?

最佳答案

这是解决方案,与 maks 建议的风格相同,通过使用属性来保持计数器的状态。您仍然有循环,只是方式不同。

private void downloadAttachments(final List<String> ftIdList) {
    final int size = ftIdList.size();

    Timer timer = new Timer() {

        private int counter = 0;

        @Override
        public void run() {
        if (counter == size) {
          cancel();
          return;
        }
        String url = ftIdList.get(counter);
        String winName = "win" + counter;
        Window.open(url, winName, "");
        counter++;
        }
    };
    timer.scheduleRepeating(2000);
}

关于java - 使用 GWT 计时器在循环中延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8615991/

相关文章:

java - 如何计算传递给 renderscript 文件的数组

java - Ext-GWT 高级表格

unit-testing - GWT 测试用例运行失败 : JUnitFatalLaunchException

java - GWT_HOME 不存在 (mac 10.8.3)

internet-explorer - GWT BrowserEvent、Internet Explorer 以及在 Input 或 Select 上动态应用的内联样式

java - 如何从 JCR(Java 内容存储库)快照备份和恢复

java - 声明类类型的方法?

java - 如何从命令行而不是 Intellij IDEA 运行 JUnit 测试?

java - 正则表达式匹配两个连续字符,除非后面/前面有更多相同的字符

java - 在 HTML/JS 应用程序中嵌入玩过的游戏