Не уверен, как вы устанавливаете локальное хранилище. Ниже приведены две маленькие функции для установки и получения значений для вашего массива в хранилище.
function setStore(temporarySelection){
localStorage.setItem("temporarySelection", JSON.stringify(temporarySelection));
}
function getStore(){
const temporarySelection = localStorage.getItem("temporarySelection");
if(temporarySelection)
{
return JSON.parse(temporarySelection)
}
else{
return [];
}
}
Вот ваш код с этими функциями
function chooseSelection(resultIndex) {
var locationName = document.getElementById('locationName-' + resultIndex);
if(!temporarySelection.includes(locationName.innerHTML)) {
console.log('pushing ' + locationName.innerHTML + ' into
temporarySelection')
temporarySelection.push(locationName.innerHTML);
} else {
var index = temporarySelection.indexOf(locationName.innerHTML);
console.log('Removing index number: ', index)
temporarySelection.splice(index, 1);
}
setStore(temporarySelection)
}
Теперь вы можете получить значения вашего магазина с помощью функции getStore на любой странице.
Относительно блокирующегося поведения существует известная проблема в Java, который может вызвать мертвую блокировку при общении с другим процессом. Я не могу сказать, является ли это тем, что Вы видите, но это стоит изучить. Документ для java.lang. Процесс говорит:
Поскольку некоторые собственные платформы только обеспечивают ограниченный размер буфера для стандартных входных и выходных потоков, отказ быстро записать, что входной поток или считать поток вывода подпроцесса может заставить подпроцесс блокироваться, и даже заходить в тупик.
По некоторым причинам process.getInputStream () .close () блоки. От JavaDoc я не вижу, почему это может произойти. Кроме того, я не понимаю, почему javadoc говорит, что "Близкий метод InputStream ничего не делает". (свяжитесь с javadoc), кто-то мог объяснить это?
При рассмотрении Javadoc Вы будете видеть тот InputStream абстрактный класс. Подклассы, которые расширяют InputStream, как ожидают, переопределят завершение (), метод (должен это быть необходимым). Очевидно подкласс InputStream, который Вы используете, делает что-то в близком методе.
Я думаю, что понял это. Очевидно, важно назвать process.getOutputStream () .close () прежде process.getInputStream () .close () и process.getErrorStream () .close ().
При добавлении на то, что записал jdigital, проверьте эту статью. Это имеет дело с Runtime.exec()
метод, и ProcessBuilder
был представлен в Java 5, но это кажется мне, обсуждение может экстраполироваться к системным процессам в целом.