PDA

Просмотр полной версии : Вебсервисы. Выполнить lastResult после send().


Elephant83
15.12.2006, 13:01
При нажатии на кнопку btnLogin, вызывается функция badLogin()
<mx:Button x="176" y="78" label="Login" id="btnLogin" click="{badLogin()}"/>
которая обращается к вебсервису wsLogin и вызывает его функцию validateUserAndPassword.
public function badLogin():void {
wsLogin.validateUserAndPassword.send()
if(wsLogin.validateUserAndPassword.lastResult == 0){
this.currentState = "fogotPassword";
}
}
Функция validateUserAndPassword возвращает число, и если оно равно нулю, устанавливается состояние fogotPassword.
Состояние fogotPassword устанавливается только при втором нажатии на кнопку и это связано с тем, что wsLogin.validateUserAndPassword.send() еще не успевает выполнить функцию, а мы уже начинаем считывать wsLogin.validateUserAndPassword.lastResult. Как бороться с такими вещами? Как заставить вызывать wsLogin.validateUserAndPassword.lastResult, только после того как предыдущая строка выполнится до конца?

Nirth
15.12.2006, 13:26
Посмотреть события класса WebService и Operation и подписыватся под них, можно погуглить по ключевым словам - асинхронные вызовы.

ex.image
17.12.2006, 22:41
Все очень просто:
wsLogin.validateUserAndPassword.addEventListener("result", validateUserAndPasswordComplete);

Соответсвенно пока идет обработка запроса можно заблокировать кнопочки и выкинуть часики, как только данные евент отработает снимаем блокировку прячем часики и выкидываем соответсвующие сообщения )))