7
votes

Asyncjs: contourner une fonction dans une chaîne de cascade

Je veux sauter une fonction d'une chaîne de cascade Fonctions avec asyncjs code> dans Nodejs code>.

Mon code ressemble à ceci: p>

if(!myBool){
    return next();
}


0 commentaires

5 Réponses :


8
votes

Une alternative peut être: xxx

f1 , f2 et f3 sont vos fonctions .

Autre que cela, vous ferez mieux de le faire explicitement, évitez de rendre votre code trop compliqué, plus simple est généralement meilleur

mise à jour: xxx < / pré>


2 commentaires

Merci pour votre réponse. Mais que si Mybool est défini dans la fonction F1 pendant la cascade?


Dans ce cas, je tirerais soit tirer F2 dans F1 (je vais mettre à jour) ou simplement utiliser le conditionnel dans F2 comme vous avez mentionné (le Alternative que vous vouliez éviter)



8
votes

Je pense que cela devrait fonctionner:

var finalCallback = function(err, result){
  if(err)
     // handle error..
  else
     console.log('end! :D');
}

async.waterfall(
  [
    function step1(callback){
       // stuff
       callback(null, someData);
    },
    function step2(someData, callback){
       if(skip_step_3)
          finalCallback(null, someData);
       else
          callback(null, someData);
    },
    function step3(moreData, callback){
       // more stuff
       callback(null, moreData);
    }
  ],
  finalCallback
)


0 commentaires

1
votes

en utilisant if-async Module Votre code ressemblera à ceci:

var async = require('async')
var ifAsync = require('if-async')

async.waterfall([
    foo,
    ifAsync(p1).then(c1).else(c2),
    bar
], function(err) {})


0 commentaires

-4
votes

Je recommanderais d'utiliser clojurescript qui a un superbe bibliothèque de base-async qui rend la vie super Facile lorsque vous traitez avec des appels ASYNC.

Dans votre cas, vous écririez quelque chose comme ceci: xxx

notez le go macro qui causera Le corps à courir de manière asynchrone et la fonction qui bloquera jusqu'à ce que les fonctions ASYNC reviennent.

Le code bloque d'abord sur la première fonction ASYNC. Ensuite, si le résultat est vrai, il exécutera la deuxième fonction ASYNC sur cela également. Enfin, il exécutera la troisième fonction ASYNC et bloquera à ce sujet.


0 commentaires

0
votes

Je suis en retard pour répondre, mais async-if-sinon pourrait vous aider.

échantillon code xxx


0 commentaires