0

我有这个 javascript 代码,我用 JSNI 嵌入到我的应用程序中:

    var i=0;
    setInterval(function(){
      data.push(Math.cos(i++/25) - 0.2 + Math.random()*0.3);
      waveform.update({
        data: data
      });
    }, 50);

但是,我想改用纯 GWT 并尝试了以下代码:

    new Timer() {
        private long i = 0;
        public void run() {
              long value = (long) ((Math.cos(i++/25) - 0.2 + Math.random() * 0.3)); 
              updateData(value); // just a wrapper for the javascript function above
        }
      }.scheduleRepeating(50);

当我运行我的应用程序时,与 JSNI 函数相比,GWT 计时器非常“滞后”,而且我几乎无法在 UI 中输入 TextBox。我的代码中的数学函数有问题还是Timer很慢?

4

1 回答 1

2

首先确保您不是在开发模式下运行 GWT 代码,而是实际构建和部署应用程序。开发模式将您的 Java 代码即时转换为 Javascript,以允许热部署/实时修改,因此非常慢。

还可以尝试在 GWT 编译器上使用“漂亮”参数,以便它生成非混淆的 Javascript,然后检查 GWT 如何将您的 Java 代码转换为 JS,也许那里有问题。

于 2012-10-25T11:41:39.757 回答