Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Вебсервисы. Выполнить lastResult после send(). (http://www.flasher.ru/forum/showthread.php?t=89424)

Elephant83 15.12.2006 13:01

Вебсервисы. Выполнить lastResult после send().
 
При нажатии на кнопку 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);

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


Часовой пояс GMT +4, время: 04:42.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.