J'expérimente avec ce que je crois est un cas d'utilisation de base de promise-queuetraitement promesse file d'attente de l'ordre
var Queue = require("promise-queue")
let queue = new Queue();
//add first item to queue
queue.add(() => {
console.log('start 1');
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log('finished processing');
resolve();
},
5000);
});
});
//add second item to queue
queue.add(() => { console.log('start 2'); });
résultats dans la sortie:
>start 1
>start 2
>finished processing
Le deuxième élément commence avant la première l'article est terminé. Qu'est-ce que je rate?
Essayez cet exemple de code runkit
Vous remarquez les effets de la file d'attente et callstack qui font JavaScript très spécial. Votre code exécute le fichier entier en environ 20ms. L'interpréteur JS touche la ligne 5 et les logs 1, puis charge la promesse dans la file d'attente, puis exécute le 'start 2' immédiatement après, puis après 5 secondes, la promesse est résolue. – agm1984
Je regarde votre code maintenant, mais je ne sais pas comment fonctionne la file d'attente de promesses pour bien raisonner sur ce que vous devriez faire. – agm1984
Essayez peut-être d'ajouter ceci au début de votre code car il pourrait permettre aux deux de s'exécuter en même temps: 'const maxConcurrent = 1; const maxQueue = 1; const queue = new Queue (maxConcurrent, maxQueue); ' – agm1984