Deux fonctions Javascript asynchrones avec parameters

Ma question dépend totalement d’une question précédente:

En ce qui concerne l’approche numéro 3 (le “compteur”): Si handleCompletion nécessite une valeur de startOtherAsync pour pouvoir faire son travail. Comment pouvons-nous mettre cela en œuvre?

Notez que cette valeur provenant de startOtherAsync (probablement un paramètre) rend sortingste startAsync et startAsync impossible l’appel de handleCompletion .

C’est en fait un endroit parfait pour utiliser les promesses. Tous les appels jQuery Ajax renvoient des promesses par défaut, ce qui signifie que vous pouvez simplement les chaîner ensemble:

 $.ajax({/*snip*/}).then( function(result){ doSomethingWithResult(result); return $.ajax({/*snip*/}); }).then(function(result){ doSomeFinalProcessing(result); }); 

Et bien sûr, un jsFiddle pour démontrer ce qui se passe .

Voici un violon mis à jour qui montre comment combiner plusieurs promesses simultanées et combiner leurs résultats.

http://jsfiddle.net/jwcarroll/U3N9u/

Et le code:

 function getRandomInt(min, max) { return Math.floor(Math.random() * (max - min + 1) + min); } function doStuffLater(msg){ var def = $.Deferred(); setTimeout(function(){ def.resolve(msg); }, getRandomInt(300, 1000)); return def.promise(); } function needsBothReturns(one, two){ console.log({one:one, two:two}); } var first = doStuffLater("Sent First"); var second = doStuffLater("Sent Second"); $.when(first, second).done(function(result1, result2){ needsBothReturns(result1, result2); });