Dies ist meine Situation in Pseudo-Code:Tun Sie etwas nach Methode gibt
function onRequest() {
receiveConnectionRequest();
response = function onConnect() {
playersConnected++;
if (playersConnected == 4) {
sendAllPlayersTheirCards()
}
return OK;
}();
sendResponse(response);
}
Wenn Spieler 1-3 connect, sie in die Liste der Spieler hinzukommen und OK wird ihnen zurückgegeben, an welcher Stelle sie gesetzt stuff auf ihrer Seite. Wenn Spieler 4 jedoch eine Verbindung herstellt, bevor die Antwort auf seine Anfrage gesendet wird, werden alle Spieler ihre Karten gesendet. Da Spieler 4 noch keine Antwort auf seine Anfrage erhalten hat, hat er noch nicht richtig initialisiert und Fehler beim Erhalt seiner Karten.
Was ich möchte, ist, dass wir dieses:
function onRequest() {
receiveConnectionRequest();
response = function onConnect() {
playersConnected++;
if (playersConnected == 4) {
plan(sendAllPlayersTheirCards())
}
return OK;
}();
sendResponse(response);
executePlanned() // now cards are sent
}
Gibt es ein allgemeines Muster für das? Die onConnect-Funktion befindet sich in einer anderen Klasse und sollte die Implementierungsdetails von onRequest nicht kennen.
Ich versuche speziell, dies in Java zu implementieren, aber generische Lösungen sind willkommen.
wie Delegation Sieht aus. plan() ist hier, um die Delegierung einzurichten, und executePlanned() ruft die in der Warteschlange befindlichen Aktionen auf. – Sorpigal