Как мне выполнить асинхронное действие внутри метода доступа? - PullRequest
2 голосов
/ 12 января 2012

У меня в классе простой метод доступа:

public function get loggedIn():Boolean
{
    var loggedIn:Boolean = somePrivateMethodToCheckStatus();
    return loggedIn;
}

API, с которым я сейчас работаю, проверяет состояние входа в систему асинхронно:

API_Class.addEventListener(API_Class.LOGIN_STATUS,onStatusCheck);
API_Class.checkLoginStatus();

function onStatusCheck(evt:API_Event):void
{
    //evt.loggedIn == true or false
}

Есть ли способЯ могу выполнить этот асинхронный запрос, не выходя из своего средства доступа?

Ответы [ 3 ]

2 голосов
/ 12 января 2012

Простой ответ: нет, нет. Вам нужно будет настроить проверку входа в систему асинхронно.

Мне немного любопытно: почему возникает необходимость повторного опроса статуса входа в систему удаленно? Если ваш пользователь вошел в приложение Flash, статус должен быть известен. То же самое касается выхода из системы. Если вход и выход обрабатываются извне приложения Flash, почему бы не реализовать механизм уведомлений (через JavaScript или через сокет)?

Кроме того, если вход в систему не позволяет пользователям выполнять действия на сервере, вы можете проверять авторизацию на сервере при каждом удаленном вызове и возвращать ошибку, если сеанс истек. Это все равно будет эффективнее, чем повторный опрос информации о состоянии.

1 голос
/ 12 января 2012

Не совсем, нет.Flash запускается в одном потоке, и каждая функция должна завершиться, прежде чем будут вызваны события и т. Д.

Одно (своего рода) решение - вернуть три значения;«да», «нет» и «в ожидании».Если он находится в ожидании, метод loggedIn () запускает проверку, и клиент этого метода должен через некоторое время повторить проверку.

Другим способом было бы заставить метод loggedIn отправлять ответ на обратный вызов.вместо.Например, "getLoggedInStatus (обратный вызов: функция)"

0 голосов
/ 12 января 2012

Вас может заинтересовать http://www.as3commons.org/as3-commons-eventbus/index.html Это удобная библиотека, ориентированная на асинхронные задания.

...