|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Получить результат функции с асинхронным событием внутри
Всем привет. Подскажите пожалуйста.
Как получить результат вызываемой функции, если внутри нее идет загрузка данных с сервера, следовательно внутри подписка на событие и результат получаем только аж в обработчике ? Наглядный пример: _str = getJson('https://site.ru/json'); // как получить данные из функции getJson, если данные получаем только в onComplete ? private function getJson(link:String):String { var json:String = new MainLoader(link); json.addEventListener(Event.COMPLETE, onGetJsonComplete); json.load(); return json; } private function onGetJsonComplete (e:Event):void { var data:String = e.target.data; }
__________________
кто не отвечает, того garbage collector забирает |
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
простой ответ - никак.К моменту окончания выполнения getJson данные еще не получены.Делать все в обработчике и есть правильное решение.
ПС:от Event.COMPLETE надо бы отписываться в обработчике. |
|
|||||
понятно. спасибо
__________________
кто не отвечает, того garbage collector забирает |
|
|||||
ну да... никак.. Асинхронных вызовов нету в as3. Самое близкое здесь, это callback функцией сделать
getJson('https://site.ru/json', function (result: String) { _str = result; }); private function getJson(link:String, callback: Function):void { var json:String = new MainLoader(link); json.addEventListener(Event.COMPLETE, onGetJsonComplete); json.load(); function onGetJsonComplete (e:Event):void { json.removeEventListener(Event.COMPLETE, onGetJsonComplete); callback(e.target.data); } }
__________________
while(live()) { hope(); } |
Часовой пояс GMT +4, время: 12:45. |
|
« Предыдущая тема | Следующая тема » |
|
|