Acc. to Java Docs :
, если поток изменяет коллекцию напрямую, когда она выполняет итерацию по коллекции с быстрым итератором, итератор будет генерировать это исключение.
blockquote>Вы пытаетесь добавить объект
Person
во время повтора с помощью Enhanced For loop .Вы можете выполнить следующую модификацию:
boolean duplicateFound = false; for(Person p : ps) { if(p.name.equals(p1.name)) { duplicates.add(p1); duplicateFound = true; } } if( ! duplicateFound) { ps.add(p1); }
Из Vue - очередность обновления Async :
Если вы еще не заметили, Vue выполняет асинхронные обновления DOM. Всякий раз, когда наблюдается изменение данных, он открывает очередь и буферизирует все изменения данных, которые происходят в одном цикле событий. Если один и тот же наблюдатель запускается несколько раз, он будет помещен в очередь только один раз. Эта буферизированная дедупликация важна для предотвращения ненужных вычислений и манипуляций с DOM. Затем в следующем цикле событий «галочка» Vue сбрасывает очередь и выполняет фактическую (уже обнуленную) работу.
Vue не обновил DOM к тому моменту, когда вы
click()
, поэтому вам нужно, чтобы Vue ждал галочку. Итак, расставьтеclikc()
после следующего тика, используяVue.$nextTick()
.Итак, для вас это будет:
this.$nextTick(function(){ this.$refs.downloadCsv.click(); });