voici le jsfiddle: https://jsfiddle.net/8ocdupar/
P>
(index):39 Response {type: "cors", url: "https://jsonplaceholder.typicode.com/todos/1", redirected: false, status: 200, ok: true, â¦} (index):39 Response {type: "cors", url: "https://jsonplaceholder.typicode.com/todos/1", redirected: false, status: 200, ok: true, â¦} (index):39 Response {type: "cors", url: "https://jsonplaceholder.typicode.com/todos/1", redirected: false, status: 200, ok: true, â¦} (index):39 Response {type: "cors", url: "https://jsonplaceholder.typicode.com/todos/1", redirected: false, status: 200, ok: true, â¦} (index):39 Response {type: "cors", url: "https://jsonplaceholder.typicode.com/todos/1", redirected: false, status: 200, ok: true, â¦} (index):39 Response {type: "cors", url: "https://jsonplaceholder.typicode.com/todos/1", redirected: false, status: 200, ok: true, â¦} DONE!!!
3 Réponses :
Utilisez p> async code> et
attendre code>:
(async function () {
var arr = [0,1,2,3,4,5];
for (var i = 0; i < arr.length; i++) {
let response = await fetch("https://jsonplaceholder.typicode.com/todos/1")
let o = await response.json(); // <-- you'll want this too...
console.log(o);
}
console.log("DONE!!!")
})(); // <-- execute it
Cela a l'effet secondaire des demandes exécutant séquentiellement plutôt que parallèlement.
Utilisez p> promess.All code> pour créer une nouvelle promesse qui résout une fois que toutes les promesses fournies ont été résolues.
let arr = [0, 1, 2, 3, 4, 5]
let promises = []
for (let i = 0; i < arr.length; i++) {
promises.push(
window
.fetch("https://jsonplaceholder.typicode.com/todos/1")
.then(response => {
console.log(response)
})
)
}
Promise.all(promises).then(() => {
console.log("DONE!!!")
})
C'est le moyen de le faire en général, à moins qu'une demande dépend d'un résultat d'un précédent. Ensuite, le plus tard aura besoin d'attendre que le premier se termine. +1
Lorsque vous appelez L'utilisation de base pour une promesse est généralement "faire quelque chose lorsque cette promesse est résolue", qui fonctionne en appelant le Pour savoir quand multiple EM> Les promesses ont fini, utilisez la fonction statique puis passez ce tableau à Qu'est-ce que (un PS important: lorsque vous faites Fetch code>, il retournera un objet de promesse qui résoudra lorsqu'une réponse est disponible. JavaScript ne pas automatiquement em> fait quelque chose avec cet objet de promesse, cependant; Vous devez être explicite sur ce que vous voulez faire avec cela.
.Chen () code > méthode sur l'objet de promesse avec une fonction de rappel passée; Vous montrez déjà que dans votre code en faisant
.then (réponse => {console.log (réponse)}) code>. p>
promess.all code>. Vous devrez garder une trace de tous les objets de promesse que vous créez en les stockant dans une matrice ... p>
promess.all < / code>. Cela rendra réellement un nouvel objet de promesse - celui-ci va résoudre quand tous les em> les promesses passées sont effectuées: p>
code> variable? Ce sera une matrimonie de toutes les valeurs résolues par chaque promesse dans le tableau code> code>. Donc, dans cet exemple, ce sera chaque objet de réponse. P>
promess.then (cb) code>, il retournera une nouvelle promesse; ceci La nouvelle promesse va résoudre lorsque la fonction
cb code> résout et sa valeur résolue sera tout ce que
cb code> est retourné. Ceci est très utile pour savoir quand vous utilisez
prometteur. Tout code>, dans le cas par exemple, vous voulez obtenir le corps em> de la réponse; vous feriez
promettes.push (extraire (...). ensuite (res => res.body ())); code>.) p> p>
Vous voulez dire quelque chose comme
promess.all (arr.map (nr => fetch ("https://jsonplaceholder.typicode.com/todos/" + nr))). alors (Console.log); Code >?