Вызовы веб-службы являются асинхронными в flex, но я хотел обернуть вызов веб-службы в класс, чтобы обеспечить синхронную инкапсуляцию. Примерно так: пользователь может вызвать getMyMethodResult и получить результат, возвращаемый веб-сервисом. Я ожидал, что поток, получивший ответ мыла, заполнит переменную _result и будет означать, что через некоторое время getMyMethod обнаружит, что _result больше не равен нулю. Но это не так! Кто-нибудь может объяснить, почему это не работает?
public class myClass
{
private var _result:Object;
public function myClass()
{
//create a web service object
...
// Add listener
_service.addMyMethodListener(myMethodListener);
}
public function getMyMethodResult()
{
_service.myMethod();
while (_result == null)
{
// count a variable or something (unimportant)
}
return _result;
}
private function myMethodListener(event:Event):void
{
_result = event.result;
}
}