0
votes

Comment contrôler le nombre de demandes?

Je dois diviser un gros fichier en centaines de téléchargements et téléchargez ces cartes téléchargées vers le serveur.

Comment puis-je contrôler le nombre de requêtes de téléchargement avec 5 demandes au plus simultanément? xxx < / pré>


2 commentaires

Qu'est-ce que tu as essayé jusque-là? async.maplimit peut être utile d'aide .


Est-ce que cela répond à votre question? Comment exécuter "x" promesses en parallèle JavaScript


3 Réponses :


0
votes

Si vous souhaitez limiter les téléchargements sur 5 demandes simultanées, vous pouvez peut-être utiliser async.maplimit code> ; Exemple:

async.mapLimit(this.uploadParts, 5, (part, onDone) => {
  axios.post(/* ... */) // or whatever API you want to use
      .then((res) => onDone(undefined, res))
      .catch(onDone)
}, (err, results) => {
  // if err is undefined, then results is an array of 
  // responses, or whatever you called your onDone callback
  // with.
});


2 commentaires

Je suis vraiment désolé. La 3ème partie libère n'est pas autorisée dans ce projet.


Regardez ensuite le code source et essayez de le comprendre. Comprendre le code derrière Asyncjs est une très bonne chose de toute façon.



0
votes

Que diriez-vous de distribuer vos données parmi quelques sacs, puis de commencer à télécharger chaque sac:

p>

let N = 347 // total record count
let M = 5   // number of bags you want

// let me mock your data real quick...
let data = Array(N)
for(var i = 0; i < N; i++){
    data[i] = i
}

// create bags...
let bagSize = N / M
let bags = Array(M)
for(var i = 0; i < M; i++) {
    let bag = data.slice(i*bagSize, (i+1)*bagSize)
    bags[i] = bag
    // ...and use immediately
    bag.map(uploadPart => doUpload)
}

// ... or later


0 commentaires

1
votes

Ceci est similaire à l'étranglement. Vous devriez pouvoir trouver quelques bibliothèques dans NPM en recherchant la "promesse de manette des gaz" ou "limite de promesse". Ce sont quelques-uns j'ai trouvé:


2 commentaires

Sorte de confusion sur la logique complexe. Permettez-moi de passer plus de temps sur votre solution. Merci beaucoup


@newbike je viens de dire ça comme exemple. Bien que j'ai eu une unité testée ce qui précède, vous ferez probablement mieux d'utiliser l'une des bibliothèques que j'ai liées à ou une autre que vous trouvez sur NPM.