почему делает inputstream.close Java () блок?

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

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 на любой странице.

6
задан Allanrbo 13 August 2012 в 12:11
поделиться

4 ответа

Относительно блокирующегося поведения существует известная проблема в Java, который может вызвать мертвую блокировку при общении с другим процессом. Я не могу сказать, является ли это тем, что Вы видите, но это стоит изучить. Документ для java.lang. Процесс говорит:

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

4
ответ дан 8 December 2019 в 18:41
поделиться

По некоторым причинам process.getInputStream () .close () блоки. От JavaDoc я не вижу, почему это может произойти. Кроме того, я не понимаю, почему javadoc говорит, что "Близкий метод InputStream ничего не делает". (свяжитесь с javadoc), кто-то мог объяснить это?

При рассмотрении Javadoc Вы будете видеть тот InputStream абстрактный класс. Подклассы, которые расширяют InputStream, как ожидают, переопределят завершение (), метод (должен это быть необходимым). Очевидно подкласс InputStream, который Вы используете, делает что-то в близком методе.

3
ответ дан 8 December 2019 в 18:41
поделиться

Я думаю, что понял это. Очевидно, важно назвать process.getOutputStream () .close () прежде process.getInputStream () .close () и process.getErrorStream () .close ().

3
ответ дан 8 December 2019 в 18:41
поделиться

При добавлении на то, что записал jdigital, проверьте эту статью. Это имеет дело с Runtime.exec() метод, и ProcessBuilder был представлен в Java 5, но это кажется мне, обсуждение может экстраполироваться к системным процессам в целом.

3
ответ дан 8 December 2019 в 18:41
поделиться
Другие вопросы по тегам:

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