在ScheduledExecutorService中执行javascript函数?

时间:2017-03-09 16:04:47

标签: javascript java javafx webview 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()?为什么暂停?

1 个答案:

答案 0 :(得分:1)

请试试这个:

timer = new Timer();
        timer.scheduleAtFixedRate(new WebViewProcess(), 3000, 1000);

private class WebViewProcess extends TimerTask {

        @Override
        public void run() {
            Platform.runLater(() -> {
                    webEngine.executeScript("someFunction();");
            });
        }
    }