我正在研究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。
如何在循环中引入延迟直到下一次迭代?
答案 0 :(得分:8)
这是解决方案,与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);
}
答案 1 :(得分:0)
例如,您需要致电timer.scheduleRepeating(5000)
。它将每5秒调用run
方法。您可以将run方法编写为for for loop,并将计数器的状态保存在变量