2012-02-13 19 views

risposta

149

Sembra che async.waterfall consenta a ciascuna funzione di passare i risultati alla funzione successiva, mentre async.series passa tutti i risultati al callback finale. Ad un livello più alto, async.waterfall sarebbe per una pipeline di dati ("dato 2, moltiplicarlo per 3, aggiungere 2 e dividere per 17"), mentre async.series sarebbe per attività discrete che devono essere eseguite in ordine, ma sono altrimenti separati .

+0

E 'possibile per una di queste due funzioni per restituire un valore? Ho letto che è possibile, ma non riesco a trovare informazioni pertinenti da nessuna parte nella documentazione. –

+1

@AndersonGreen: No. Guardando il sorgente della libreria, né 'waterfall' né' series' restituiscono un valore. È previsto che qualunque sia il risultato verrà utilizzato nel parametro di callback facoltativo. – Twisol

+0

La risposta sopra può essere corretta fino al 2012, ma quella corretta è la stessa di quella successiva, ovvero: series() come è chiamata che TUTTI risulta come una serie passata al callback finale, e waterfall è l'ULTIMO risultato passato al callback finale. Vedi [Mozilla Developer] (https://developer.mozilla.org/en-US/docs/Learn/Server-side/Express_Nodejs/Displaying_data) – Jeb50

44

Entrambe le funzioni passano il valore di ritorno, di ogni funzione al successivo, quindi al termine richiamerà il callback principale, trasmettendo il suo errore, se si verifica un errore.

La differenza è che async.series(), una volta terminate le serie, passerà tutti i risultati al callback principale. async.waterfall() passerà al callback principale solo il risultato dell'ultima funzione chiamata.

+0

Questa dovrebbe essere la risposta ;-) –

+0

@Mario "Entrambe le funzioni passano il callback della precedente funzione "OR" Entrambe le funzioni passano il risultato della funzione precedente "? – user1451111

+0

@ user1451111, Risultato, lol ... Sono sicuro di averlo scritto per la prima volta ... – Mario

17

async.waterfall() si tratta di un action that relies on the previous outcome.

async.series() si occupa di un'azione che vuole see all the result at the end

+1

Immagini incredibilmente create. Li hai creati tu o li hai portati da qualche altra parte? – user1451111

+0

Grazie per le immagini; semplice e chiaro. Pollice su. –

+0

Grazie !!!! Ora finalmente capisco :) –