![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Не может он возвращать данные через return. В ас3 реализована система событий. Язык однопоточный, и он не может остановиться и подождать пока придут данные с сервера. Поэтому тут есть два варианта, либо отсылать событие, когда данные пришли, и по событию их получать, либо передавать в этот метод колбэк, и дергать его по приходу данных. Второй вариант удобнее, так как потребует меньше кода.
В общем случае это выглядит примерно так private static var _onCompleteUser:Function = null; public static function getUserData(onCompleteUser:Function):void { _onCompleteUser = onCompleteUser; VK.api("users.get", { user_ids: flashVars['viewer_id'], fields: "first_name" }, finishedGetUser, finishedGetUserError); } private static function finishedGetUser(params:Object):void { if (_onCompleteUser != null) _onCompleteUser.apply(); // ну и можно тут, к примеру сразу данные передавать, а можно присвоить их какой-то переменной и получать через геттер } |
|
|||||
|
Регистрация: Apr 2014
Сообщений: 4
|
Что такое "колбэк"?
Если я правильно понял, то в вашем примере я буду получать данные так: |
|
|||||
|
Регистрация: Apr 2014
Сообщений: 4
|
если я использую функцию
private static var _onCompleteUser:Function = null; public static function getUserDataByID(id:Number,onCompleteUser:Function):void { _onCompleteUser = onCompleteUser; VK.api(...,finishedGetUser,error); } private static function finishedGetUser(params:Object):void { if (_onCompleteUser != null) _onCompleteUser.apply(null,[params[0]]); } то могут быть вызвана дважды f2 вместо "по одному разу f1 и f2". Разве нет? Последний раз редактировалось trot99; 15.04.2014 в 00:51. Причина: дополнение |
![]() |
![]() |
Часовой пояс GMT +4, время: 18:09. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|