AJAX meghívás ismétléssel, ciklusban

AJAX meghívás ismétléssel, ciklusban
2022-01-07T11:26:21+01:00
2022-01-07T12:13:31+01:00
2022-12-06T23:40:37+01:00
*deleted_23419333
Sziasztok!

JavaScript kódom:

function loadDoc() { var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { document.getElementById("demo").innerHTML = this.responseText; } }; xhttp.open("GET", "api.php", true); xhttp.send(); }

Hogyan tudnám ezt meghívni ismétléssel?

A honlap (egy API) sokszor hibásan működik és ez a gond.

Ha jól működik, akkor az eredmény:

{ "code": 200 }

Ha nem, akkor:

{ "code": 0 }

Végtelen ciklust nem szeretnék, de azt igen, ha beállíthatnám egy JS változóval, hogy mondjuk maximum 10-szer ismételje meg az AJAX meghívást, ha mondjuk 10-szer 0-ra fut, akkor 11-re már ne próbálja meg, de természetesen amikor először 200-ra fut, akkor ne ismételje meg többször.

Az API szolgáltatója javítja a hibát náluk, de ez sok idő lesz.

Előre is köszönöm.
Mutasd a teljes hozzászólást!
Az XMLHttpRequest osztály helyett én a fetch API-t használnám, mivel az támogatja az async/await mintát. Onnantól kezdve pedig egy ciklus kérdése az egész:

async function queryAsync() { let response = null; let retries = 0; do { response = await fetch("api.php"); retries++; } while (!response.ok && retries <= 10); //vagy más feltétel alapján ellenőrizni document.getElementById("demo").innerHTML = response.text(); }
Nem néztem utána, hogy a fetch dob-e kivételt, de ha igen, arra is fel kell készülni.
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd