Цитата:
|
Вопрос в том, есть ли способы сделать механизм для обработки ошибок при асинхронных вызовах, который был бы так же удобен, как исключения при синхронных.
|
В смысле предвидел ошибки до их появления?
Как может асинхронный быть таким же, как синхронный? Помните картинку популярную с кубиками, на которых написаны буквы "А","П","Ж" и "О", и "пока не соберешь слово СЧАСТЬЕ, домой не пойдешь"?
Цитата:
|
Вот если бы можно было избавиться от протягивания коллбэка onError, а как-то через весь стек передать сигнал.
|
Кому передать? Уже нет никакого стека. Он кончился, остался в прошлом. Избавиться от протягивания — пожалуйста, просто подпишитесь на события. Работайте с Объектом, а не с функцией. AS3 это ООП-язык. Вы просите Объект загрузить данные. Объект участливо предоставляет Вам события. Зачем создавать свою систему поставок через единый коннектор-метод, непонятно. Вы никак не обработаете ошибку до ее появления. Вам придется резать код на методы-обработчики, как бы ни хотелось писать функцию-простыню в 1000 строк. Асинхронная ошибка это Событие по самой своей сути. То, как поступают с ней в языке — естественное природное поведение, и нарушить законы времени не удастся. Код не будет сам стоять и ждать, что ответит getData. Для этого надо поставить закрывающую скобку и написать новый блок, который запустится, когда хозяин getData отрапортует об исходе операции.