В Dart, как убедиться, что обновления потоков завершены, прежде чем двигаться дальше?

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

1
задан Nick Lee 19 January 2019 в 08:15
поделиться

1 ответ

Причина, по которой await изменил ситуацию, заключается в том, что любой await будет ожидать хотя бы микротрубу - независимо от того, является ли ожидаемое вами значение Future или нет. Если это Future, он будет ждать его завершения или выполнения микрозадачи, если она уже завершена. Он будет вести себя идентично, если бы вы await null; следовали за controller.add(2);.

В общем случае StreamController не знает, когда все слушатели получили событие, особенно учитывая такие вещи, как асинхронные слушатели или Stream.asyncMap .

0
ответ дан Nate Bosch 19 January 2019 в 08:15
поделиться
Другие вопросы по тегам:

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