java - 如何在 GWT 中循环 AsyncAjaxRequest?

标签 java gwt

我需要每 10 秒发出一次 ajax 请求并在客户端更新数据。

所以,我在 onModuleLoad() 中尝试了这种方式:

while (true) {
    try {
        someService.initTable(new AsyncCallback<SomeObject>() {

                    @Override
                    public void onFailure(Throwable caught) {
                    }

                    @Override
                    public void onSuccess(SomeObject result) {
                        initData(numbersTable, result);
                    }
                });
            } catch (Exception e) {
            }
        }

但它进入无限循环。

我想要得到这样的东西

(function worker() {
  $.ajax({
    url: 'ajax/test.html', 
    success: function(data) {
      $('.result').html(data);
    },
    complete: function() {
      // Schedule the next request when the current one's complete
      setTimeout(worker, 5000);
    }
  });
})();

最佳答案

gwt 中的异步调用立即执行,并“稍后”返回。在您的代码中, while 循环不等待任何东西,因此您每秒调用 initTable() 很多次,因此是无限循环。

只需创建一个每 10 秒执行一次的计时器即可。

final Timer timer = new Timer() {

        @Override
        public void run() {
              try {
                someService.initTable(new AsyncCallback<SomeObject>() {

                     @Override
                     public void onFailure(Throwable caught) {
                     }

                     @Override
                     public void onSuccess(SomeObject result) {
                         initData(numbersTable, result);
                     }
                   });
                } catch (Exception e) {
                }
        }

};
timer.scheduleRepeating(10000);

关于java - 如何在 GWT 中循环 AsyncAjaxRequest?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33885220/

相关文章:

java - 尝试使用 arraylist 从 mysql 填充 JTable 时出错

java - 将条件作为参数传递给迭代器

google-app-engine - 无法在 GWT 上对 RPC 进行单元测试

gwt - 从 GWT 元素中删除内联样式属性

java - 小部件的所有实例的 GWT setStylePrimaryName

java - 如何在 Java 中使用 lambda 函数对每列和每行的列表列表求和?

java - Log4j SMTP 将错误消息发送到电子邮件

gwt - 链接小部件 GWT - uiBinder

java - Appengine Java 和 GWT - 无法重新创建和打开 channel

java - 添加到双向链表的末尾