Hinweis 04-3: Timeout und Retry

Stufe 1 zuerst lesen, dann selbst probieren. Die nächste Stufe erst, wenn du nach zwei Versuchen feststeckst.

Stufe 1: Denkfrage

Ein Timeout heisst: Du weisst nicht, ob die Anfrage angekommen ist. Was darf ein "Erneut versuchen"-Button deshalb tun, und was nicht? (Hinweis: Entwürfe anfordern ist harmlos; eine Zahlung auslösen wäre es nicht.)

Stufe 2: Teilbeispiel

{state.kind === "error" && (
  <div>
    <p data-testid="api-error">{state.message}</p>
    <button type="button" data-testid="retry-button" onClick={requestDraft}>Erneut versuchen</button>
  </div>
)}

Stufe 3: Konkrete Erklärung

Der Retry-Button ruft dieselbe requestDraft-Funktion auf wie der Hauptbutton. Der Test C02-M4-04 zählt die Aufrufe der API: nach dem ersten Klick 1, nach dem Retry 2. Der Simulator im Modus "timeout" schlägt wieder fehl; das ist in Ordnung, der Test prüft nur den zweiten Aufruf. Setze den Hauptbutton während loading auf disabled, damit niemand doppelt klickt. Zum Ausprobieren im Browser: createSimulatedApi("timeout", { timeoutMs: 2000 }) in App.tsx, danach wieder auf "success" zurückstellen.

Zurück zu Mission 4: Nächste Schritte vorbereiten

Nach oben