Я использую Flex и Actionscript 3, а также Webservices, rpc и callResponder. Я хочу, например, сказать:
loadData1(); // Loads webservice data 1
loadData2(); // Loads webservice data 2
loadData3(); // Loads webservice data 3
Однако Actionscript 3 работает с асинхронными событиями, поэтому при каждом вызове нужно ждать, пока ResultEvent сработает, когда это будет сделано. Таким образом, я могу захотеть сделать следующий запрос каждый раз, когда происходит событие. Однако я боюсь, что могут возникнуть проблемы с многопоточностью, а некоторые события могут вообще не произойти. Я не думаю, что я делаю хорошую работу по объяснению, поэтому я попытаюсь показать некоторый код:
private var service:Service1;
var cp:CallResponder = new CallResponder();
public function Webservice()
{
cp.addEventListener(ResultEvent.RESULT, webcalldone);
service = new Service1();
}
public function doWebserviceCall()
{
// Check if already doing call, otherwise do this:
cp.token = service.WebserviceTest_1("test");
}
protected function webcalldone(event:ResultEvent):void
{
// Get the result
var result:String = cp.lastResult as String;
// Check if other calls need to be done, do those
}
Теперь я мог бы, конечно, сохранить действия в массиве, но кто может сказать, что addToArrayList и проверка доступности других вызовов не портят друг друга или просто пропускают друг друга, тем самым останавливая выполнение? Есть ли что-то вроде летучего Arraylist? Или есть совершенно другое, но лучшее решение этой проблемы?