我有这个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);
当我运行我的应用程序时,GWT计时器非常“滞后”,而且与JSNI函数相比,我几乎无法在UI中输入TextBox。我的代码中的数学函数有问题,或Timer
只是慢吗?
答案 0 :(得分:2)
首先确保您没有在开发模式下运行GWT代码,但实际上是在构建和部署应用程序。开发模式可以将您的Java代码实时转换为Javascript,以便进行热部署/实时修改,因此速度非常慢。
还尝试在GWT编译器上使用“pretty”参数,以便它生成非混淆的Javascript,然后检查GWT如何将Java代码转换为JS,也许那里存在问题。