J'ai besoin de récupérer des informations pour ensuite exécuter une requete POST plus tard.
Ma question est simple. Pourquoi cela fonctionne :
fetch("A.php",{
method: 'POST',
credentials: "same-origin",
body : params
}).then(function(){
params.append("clé", 123);
fetch("B.php",{
method: 'POST',
credentials: "same-origin",
body : params
}).then(function(){
// C'est OK
}
});
Alors que ceci non:
fetch("A.php",{
method: 'POST',
credentials: "same-origin",
body : params
}).then(function(){
//Récupération de l'id pour le seconde requete
params.append("clé", 123);
}).then(
fetch("B.php",{
method: 'POST',
credentials: "same-origin",
body : params
}).then(function(){
// Pourquoi je ne retrouve pas le params.clé ?
}
});
J'ai l'impression que l'ordre d’exécution n'est pas respecté.
simplement car tu appelle deux fois then, tes deux fonctions vont être appelée presque simultanément, de manière asynchrone, le deuxième then ne va pas attendre la fin du premier pour s'éxecuter.
Ben si le principe de then est justement de contrôler l'ordre d’exécution. C'est juste que le premier devrait retourner la valeur dont le second à besoin.
Regarde bien le code, et la méthode then ligne 8. Cette dernière attend une fonction et tu lui passe une promesse (le retour du fetch). Les 2 codes suivants marchent chez moi même la seconde version, j'y croyait pas sur le coup :
Ben si le principe de then est justement de contrôler l'ordre d’exécution. C'est juste que le premier devrait retourner la valeur dont le second à besoin.
il ne retourne pas de promise dans le premier then, donc il peut y avoir des surprises lors de l'execution du deuxieme:
Debut d'execution du then 1
Debut d'exection du then 2
Fin d'execution du then 1
Fin d'execution du then 2
les then successifs seront éxecutés dans l'ordre mais de façon asynchrone
My website : Mon serveur discord, Se demerder tout seul, Faille XSS et SQL