Bonjour a tous, merci pour votre attention.
en fait mon but est d'attendre le résultat d'une requete dans ma base de données afin d'exécuter le reste de mon script ,pour se faire j'ai fait un fetch sur une page pour récupérer le fameux résultat sous format , json jusqu'ici tout va bien voici l'objet que je récupère: {"situation":0}', ce que je veux est simple si la valeur de situation est egal a 1 j'execute le code, si situation n'est pas egal a 1, alors je fais de nouvelles vérifications(toujours avec fetch sur la meme page ) chaque deux secondes jusqu'a ce que la valeur de situation passe a 1 , le code prévue pour ce cas de figure (if situation=1 s'exécute)
Mais j'ai quelques difficultés pour le faire, merci pour votre aide...

let temps =  9
const timerElement = document.getElementById("demo")

      function diminuerTemps() {
        document.getElementById("demo").innerHTML =`vous serez redirigé vers la page des résultats dans ${temps} secondes `;
        temps--;
        if(temps === 0){window.location.replace("result_page.php");
         }

    }

function diminuertemps2(){
  setInterval(diminuerTemps,1000)
}

function the_fetch (){
    document.getElementById("container").innerHTML="veuillez patienter quelques secondes...";

    setTimeout (function display_board(){const url = "result_page.php";
fetch(url)
  .then(resp => resp.json())
  .then(data => {
    console.log(data);
    const resultat = data.situation;
    // Utilisez 'resultat' ici ou faites-en ce que tu veut
    if (resultat===1){const url2 = "affichage_equipe.php";
fetch(url2)
  .then(resp2 => resp2.text())
  .then(data2 =>{
      document.getElementById('container').innerHTML=data2;
      // diminuertemps2();---premier problème---
      //ce n'est qu'une fois qu'une fois les résultats du fetch afficher dans le container
      //que je souhaite enclencher mon décompte de 10 secondes avec la fonction diminuertemps2(),mais vu que la fonction n'est pas asynchrone le décompte se lance toute suite

  })}                   //---deuxième problème---
            else{

                //autrement dit lorsque resultat !===1,je souhaite que toutes les 2 secondes un fetch de vérification s'effectue toujours sur la page result_page.php et ce jusqu'a ce que la valeur de resultat repasse a 1 ce qui me permettra d'exécuter le script contenu dans la condition if(result===1)
                // pour celà j'utilise setInterval dans une autre fonction the_fetch2
            function the_fetch2(){}

            }

  })
  .catch(erreur => {
    console.error("Une erreur s'est produite :", erreur);
});},3000)}

Ce que je veux

Décrivez ce que vous cherchez à obtenir.

Ce que j'obtiens

Décrivez vos éventuelles erreurs ou ce que vous obtenez à la place de ce que vous attendez :(

1 réponse


Ne faudrait il pas transformer vos fetch en utilisant la technique async/await pour être sûr que le premier fetch donne bien un résultat avant de déclencher le deuxième ?
D'autre part il me semble qu'utiliser des setTimeOut n'est pas très fiable dans ce cas non ?