在 ScheduledExecutorService 中执行 javascript 函数?
Executing javascript function in ScheduledExecutorService?
我使用每 1 秒运行一次的 ScheduledExecutorService 建立了一个循环。我有一个 WebView (JavaFX),我想从中调用一个函数。
如果我把它放在一个按钮上,我可以很好地调用函数:
button.setOnAction(event -> {
webEngine.executeScript("someFunction();");
});
然后点击它,它执行得很好,但是当我这样做时:
execService.scheduleAtFixedRate(()->{
loop();
webEngine.executeScript("someFunction();");
}, 3000L, 1000L, TimeUnit.MILLISECONDS);
程序在 webEngine.executeScript("someFunction();");
处停止(如果我将该行放在我的 loop()
方法中,也会执行同样的操作)
如何与程序的其余部分一起每秒执行 someFunction()
?为什么暂停?
请试试这个:
timer = new Timer();
timer.scheduleAtFixedRate(new WebViewProcess(), 3000, 1000);
private class WebViewProcess extends TimerTask {
@Override
public void run() {
Platform.runLater(() -> {
webEngine.executeScript("someFunction();");
});
}
}
我使用每 1 秒运行一次的 ScheduledExecutorService 建立了一个循环。我有一个 WebView (JavaFX),我想从中调用一个函数。
如果我把它放在一个按钮上,我可以很好地调用函数:
button.setOnAction(event -> {
webEngine.executeScript("someFunction();");
});
然后点击它,它执行得很好,但是当我这样做时:
execService.scheduleAtFixedRate(()->{
loop();
webEngine.executeScript("someFunction();");
}, 3000L, 1000L, TimeUnit.MILLISECONDS);
程序在 webEngine.executeScript("someFunction();");
处停止(如果我将该行放在我的 loop()
方法中,也会执行同样的操作)
如何与程序的其余部分一起每秒执行 someFunction()
?为什么暂停?
请试试这个:
timer = new Timer();
timer.scheduleAtFixedRate(new WebViewProcess(), 3000, 1000);
private class WebViewProcess extends TimerTask {
@Override
public void run() {
Platform.runLater(() -> {
webEngine.executeScript("someFunction();");
});
}
}