Ceci est ma situation pseudocode:faire quelque chose après la méthode retourne
function onRequest() {
receiveConnectionRequest();
response = function onConnect() {
playersConnected++;
if (playersConnected == 4) {
sendAllPlayersTheirCards()
}
return OK;
}();
sendResponse(response);
}
Lorsque les joueurs 1-3 de connexion, ils sont ajoutés à la liste des joueurs et OK est leur retour, à quel point ils fixeront des trucs de leur côté. Lorsque le joueur 4 se connecte, cependant, avant que la réponse à sa demande ne soit envoyée, tous les joueurs reçoivent leurs cartes. Comme le joueur 4 n'a pas encore reçu de réponse à sa demande, il n'a pas encore été correctement initialisé et des erreurs ont été commises lors de la réception de ses cartes.
Ce que je voudrais avoir est la suivante:
function onRequest() {
receiveConnectionRequest();
response = function onConnect() {
playersConnected++;
if (playersConnected == 4) {
plan(sendAllPlayersTheirCards())
}
return OK;
}();
sendResponse(response);
executePlanned() // now cards are sent
}
Y at-il un modèle général pour cela? La fonction onConnect est dans une classe différente et ne doit pas être consciente des détails d'implémentation de onRequest.
J'essaie spécifiquement de l'implémenter en Java, mais les solutions génériques sont les bienvenues.
On dirait délégation. plan() est ici la configuration de la délégation et executePlanned() appelle les actions en file d'attente. – Sorpigal