2013-04-01 15 views
8

Nella scrittura di un modulo JavaScript abbastanza grande con molte operazioni asincrone tutte relative alle promesse, diventa piuttosto difficile eseguire il debug e seguire il flusso/lo stato delle promesse.Come si traccia e si visualizzano le Promesse JavaScript?

Esistono strumenti o framework per test di strumentazione o codice di modulo per fornire un flusso di tutte le Promises nel mio sistema? Sto usando le promesse di jQuery se conta davvero.

+0

+1 eccellente domanda. Ho scritto la mia libreria di promesse in cui tutte le promesse sono memorizzate in un unico array per un facile loop e debugging. Sarei interessato a capire come funziona in jQuery. a mano a mano che la domanda è chiusa, ho votato per riaprirlo. – Christophe

+0

@Christophe non votano per riaprire una domanda perché ritieni che possa essere utile. Nessuna domanda utile può essere richiesta su StackOverflow. Le domande che richiedono "i migliori strumenti/suggerimenti/trucchi" sono davvero a tempo indeterminato e se le domande non possono avere una risposta corretta, non appartengono a un sito Q/A come StackOverflow. –

+0

Questa domanda, sebbene utile, in realtà non appartiene a Overflow dello stack. Prova [programmers.se] (flag per migrare) –

risposta

1

Aggiungerebbe un po 'di overhead di sviluppo, ma se si utilizza il nodo per il back-end è possibile implementare test di unità asincroni abbastanza robusti con vows.js. Se vuoi aggiungere ancora più lavoro per te stesso, puoi usare i voti per creare versioni simulate di tutte le tue risposte se stai usando un altro tipo di tecnologia server e usarlo per testare e generare rapporti. L'uso di un server mock di node.js ti consente anche di fare cose robuste, per imprese ^^ come simulare certe richieste che non riescono a vedere come il tuo front end risponde con garbo.

Vorrei avere una risposta migliore di questa però; console.log e console.dir sono i tuoi migliori amici. Cram le tue callback piene di esse in modo da farti un'idea di quanto tempo ci vuole per accadere e in quale ordine accadono.

2

Fuori dalla mia testa, e stimolato dall'idea di @ MrLeap di inviare messaggi allo console, che ne dici di creare un Deferred tramite un "adattatore" del tuo progetto.

esempio (embrionale e non testata):

var debugMode = true; 

function DeferredAdapter(name) { 
    var dfrd = $.Deferred(); 
    if(debugMode) { 
     dfrd.notify = function() { 
      console.log(name + ': notify'); 
      if (arguments[0] && typeof arguments[0] == "string") 
       console.log(arguments[0]); 
     }; 
     //similar for resolve 
     //similar for reject 
    } 
    return dfrd; 
} 

questo modo (quando hai capito di lavoro), si possono fare cose in più quando il debug, con un semplice meccanismo per spegnere la roba in più in produzione codice, senza la necessità di passare attraverso tutte le istruzioni di spurgo del codice console.log().

Problemi correlati