0

JSNIを使用してアプリケーションに埋め込んだJavaScriptコードがあります。

    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);

アプリケーションを実行すると、GWTタイマーが非常に「遅く」なり、JSNI関数と比較して、UIのTextBoxにほとんど入力できなくなります。私のコードの数学関数に何か問題がありますか、それともTimer単に遅いですか?

4

1 に答える 1

2

まず、GWTコードを開発モードで実行していないことを確認しますが、実際にアプリケーションをビルドしてデプロイしていることを確認します。開発モードでは、ホットデプロイ/リアルタイムの変更を可能にするために、JavaコードをJavascriptにオンザフライで変換します。これは、非常に遅いためです。

また、GWTコンパイラで「pretty」引数を使用して、難読化されていないJavascriptを生成してから、JavaコードがGWTによってJSに変換される方法を確認してください。問題がある可能性があります。

于 2012-10-25T11:41:39.757 に答える