PDA

Просмотр полной версии : Как сделать чтобы функция запускалась только после выполнения другой функции


grafillo!
23.09.2014, 19:52
Как сделать так чтобы функция openUserPrivate(e); запускалась только после того как функция sendRequestLRtrue(); загрузила данные, а то она срабатывает первей чем данный успевают распарситься и вылетает ошибка((. Также структура проги такова что openUserPrivate(e); принимает в себя событие мыши поэтому вызвать её из sendRequestLRtrue(); не получится. Есть ли какоето решение?

public function openPrivateUserFromDialog(e:MouseEvent){
sendRequestLRtrue(); // загружает данные
drawPrivatePeople(e.target.login);
openUserPrivate(e);

}

Gerbert
23.09.2014, 20:09
Конечно есть! Сделать по человечески или согласится с тем, что "меня и абы чего устроит" и вызывать сохраненные куда-то методы, которые должны идти после загрузки, после загрузки.

caseyryan
23.09.2014, 20:54
после загрузки данных послать событие об их загрузке и по этому событию уже вызывать openUserPrivate(e);

Вызвать его можно и без события мыши так:

openUserPrivate(null);

при условии, что сам объект события никак не используется в обработчике

ZergMaster
25.09.2014, 23:32
да, либо создавать евент, либо добавить в sendRequestLRtrue() callback функцию. Типа того:


public function openPrivateUserFromDialog(e:MouseEvent){
drawPrivatePeople(e.target.login);
sendRequestLRtrue(function ():void {
openUserPrivate(e);
})
}


private function sendRequestLRtrue(callback:Function):void {
//происходит загрузка, много всякого всего разного интересного и не очень
//а когда загрузка завершена, все путем, вызываем функцию
callback();
}

Так же таким макаром можно передавать переменные через callback функцию

ЗЫ:Но лучше, конечно, пользоваться событиями. Красивее. )