Se non si restituisce uno stream, il risultato asincrono di ciascuna attività non sarà atteso dal relativo chiamante, né alcuna attività dipendente.
Ad esempio, quando non tornare torrenti:
$ gulp scripts
[21:25:05] Using gulpfile ~/my-project/gulpfile.js
[21:25:05] Starting 'tsc'...
[21:25:05] Finished 'tsc' after 13 ms
[21:25:05] Starting 'scripts'...
[21:25:05] Finished 'scripts' after 10 ms
[21:25:05] Compiling TypeScript files using tsc version 1.0.1.0
Nota qui che il compito scripts
dipende il compito tsc
. Segnala che tsc
termina in 13 millisecondi, il che è decisamente troppo veloce per poter essere ragionevolmente creduto. Quindi l'attività scripts
sembra essere avviata e completata, sempre in un periodo di tempo molto breve. Infine, inizia l'operazione effettiva eseguita da tsc
. Chiaramente né tsc
né scripts
hanno atteso il completamento della fase di compilazione.
Quando queste attività restituiscono i loro flussi, l'uscita sembra piuttosto diversa:
$ gulp scripts
[21:42:25] Using gulpfile ~/my-project/gulpfile.js
[21:42:25] Starting 'tsc'...
[21:42:25] Compiling TypeScript files using tsc version 1.0.1.0
[21:42:32] Finished 'tsc' after 6.65 s
[21:42:32] Starting 'scripts'...
[21:42:32] Finished 'scripts' after 204 ms
Ecco la sequenza ha un senso, e le durate riportati soddisfare le aspettative.
fonte
2014-09-27 20:53:32
Cosa succede se si dispone di un'attività di gulp asincrona ma non di flussi? Puoi chiamare una funzione 'done()' o restituire una promessa? – Bill
È possibile definire l'attività in modo che accetti una funzione di callback come parametro finale, oppure è possibile restituire una promessa. Vedi qui: https://github.com/gulpjs/gulp/blob/v3.9.1/docs/API.md#gulptaskname--deps-fn –