Изображения на вашей странице загружаются правильно. Проблема здесь в том, что они скрыты. В вашем javascript-коде у вас есть следующий оператор: document.getElementsByClassName("tablink")[0].click();
Это вызовет функцию openImgtype
с modal1Desktop
как аргумент secong. Это будет в конце установить display: none
для всех элементов с классом imgtype
, за исключением одного с id modal1Desktop
. Поэтому, когда вы открываете первый модальный, изображение, похоже, загружается правильно. Но когда вы открываете другие модальности, изображение, похоже, не загружается (оно загружено, проблема в том, что он по-прежнему скрыт). Я создал плункер, который решает вашу проблему: https://plnkr.co/edit/mdNy9BVJox8U7TbOxNsT?p=preview .
Причина, по которой await
изменил ситуацию, заключается в том, что любой await
будет ожидать хотя бы микротрубу - независимо от того, является ли ожидаемое вами значение Future
или нет. Если это Future
, он будет ждать его завершения или выполнения микрозадачи, если она уже завершена. Он будет вести себя идентично, если бы вы await null;
следовали за controller.add(2);
.
В общем случае StreamController
не знает, когда все слушатели получили событие, особенно учитывая такие вещи, как асинхронные слушатели или Stream.asyncMap
.