Les opérations asynchrones bien ont toujours cet effet sur les bases de code, malheureusement, il n'y a pas beaucoup de choses que vous pouvez faire. Si vos opérations de chargement forment une sorte de «Service», il est préférable de créer une interface IService, avec l'architecture de style MVC appropriée et d'utiliser des jetons de données. En bref:
//In your command or whatever
var service:IService = model.getService();
var asyncToken:Token = service.someAsyncOperation(commandParams);
//some messaging is used here, 'sendMessage' would be 'sendNotification' in PureMVC
var autoCallBack:Function = function(event:TokenEvent):void
{
sendMessage(workOutMessageNameHere(commandParams), event.token.getResult());
//tidy up listeners and dispose token here
}
asyncToken.addEventListener(TokenEvent.RESULT, autoCallBack, false, 0, true);
Là où j'ai écrit workOutMessageNameHere() les mots que je suppose est la partie que vous voulez automatiser, vous pouvez soit avoir une sorte de commutateur énorme, ou une carte de commandParams (urls ou autre) aux noms de message, de toute façon mieux obtenir cette information d'un modèle (dans la même commande):
private function workOutMessageNameHere(commandParams):String
{
var model:CallbackModel = frameworkMethodOfRetrivingModels();
return model.getMessageNameForAsyncCommand(commandParams);
}
cela devrait, espérons simplement vous laisser appeler la commande « callService » ou comme vous déclenchez, vous pouvez configurer le callbackMap/switch dans le code ou éventuellement via XML analysé. J'espère que cela vous a aidé, et comme je viens de me rendre compte, est pertinent? Salut, juste eu une autre lecture du problème que vous essayez de résoudre, et je pense que vous décrivez une série d'états finis, c'est-à-dire une machine à états. Il semble que vos séquences soient en gros FunctionState -> LoadingState -> ResultState. Cela pourrait être une meilleure approche générale pour gérer des charges de petites «chaînes» asynchrones.