这是我在伪代码中的情况:
function onRequest() {
receiveConnectionRequest();
response = function onConnect() {
playersConnected++;
if (playersConnected == 4) {
sendAllPlayersTheirCards()
}
return OK;
}();
sendResponse(response);
}
当玩家 1-3 连接时,他们会被添加到玩家列表中,并且 OK 会返回给他们,此时他们将在他们身边设置东西。然而,当玩家 4 连接时,在发送对他的请求的响应之前,所有玩家都会收到他们的牌。因为玩家 4 还没有收到对他的请求的响应,所以他还没有正确初始化并且在收到他的牌时出错。
我想要的是这样的:
function onRequest() {
receiveConnectionRequest();
response = function onConnect() {
playersConnected++;
if (playersConnected == 4) {
plan(sendAllPlayersTheirCards())
}
return OK;
}();
sendResponse(response);
executePlanned() // now cards are sent
}
有没有通用的模式?onConnect 函数在不同的类中,不应该知道 onRequest 的实现细节。
我专门尝试在 Java 中实现这一点,但欢迎使用通用解决方案。