Удаление узла из дополнительного потока в JavaFX [дубликат]

Посмотрите на этот пример:

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope,$http) {

    var getJoke = function(){
        return $http.get('http://api.icndb.com/jokes/random').then(function(res){
            return res.data.value;  
        });
    }

    getJoke().then(function(res) {
        console.log(res.joke);
    });
});

Как вы можете видеть, getJoke возвращает разрешенное обещание (оно разрешено при возврате res.data.value). Таким образом, вы ждете, пока запрос $ http.get не будет завершен, а затем выполнится console.log (res.joke) (как обычный асинхронный поток).

Это plnkr:

http://embed.plnkr.co/XlNR7HpCaIhJxskMJfSg/

8
задан Vicente Bermúdez 4 April 2015 в 17:43
поделиться

1 ответ

Обернуть timer.setText() в Platform.runLater(). Вне этого внутри цикла while добавьте Thread.sleep(1000);

. Причина исключения Illegal State Exception - вы пытаетесь обновить интерфейс в каком-то потоке, кроме потока приложений JavaFX.

Причина почему ваше приложение рушилось, когда вы добавили, что вы перегружали поток пользовательского интерфейса, добавляя процесс, который будет выполняться в потоке пользовательского интерфейса бесконечно.

Если возможно, замените while (true) на Timer или TimerTask.

Для получения дополнительных опций следуйте за этой ссылкой

17
ответ дан Community 27 August 2018 в 01:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: