refactor(samples): use produceAsync in tic-tac-toe

Update the tic-tac-toe sample to use `produceAsync` instead of `produce`
to ensure state mutations correctly await interruption promises.
This commit is contained in:
hypercross 2026-04-25 15:57:59 +08:00
parent fb3c98b1ef
commit 59391c74d9
1 changed files with 4 additions and 4 deletions

View File

@ -77,7 +77,7 @@ export async function start(game: TicTacToeGame) {
const turnNumber = game.value.turn + 1;
const turnOutput = await turn(game, currentPlayer, turnNumber);
game.produce((state) => {
await game.produceAsync((state) => {
state.winner = turnOutput.winner;
if (!state.winner) {
state.currentPlayer = state.currentPlayer === "X" ? "O" : "X";
@ -111,7 +111,7 @@ async function turn(
game.value.currentPlayer,
);
placePiece(game, row, col, turnPlayer);
await placePiece(game, row, col, turnPlayer);
const winner = checkWinner(game);
if (winner) return { winner };
@ -163,7 +163,7 @@ export function checkWinner(host: TicTacToeGame): WinnerType {
return null;
}
export function placePiece(
export async function placePiece(
host: TicTacToeGame,
row: number,
col: number,
@ -177,7 +177,7 @@ export function placePiece(
player,
id: `piece-${player}-${moveNumber}`,
};
host.produce((state) => {
await host.produceAsync((state) => {
state.parts[piece.id] = piece;
board.childIds.push(piece.id);
board.partMap[`${row},${col}`] = piece.id;