Data una subroutine ricorsiva in ambiente a thread singolo che avvia numerose operazioni di I / O asincrone e registra le funzioni di callback per ognuna di esse. Questi callback verranno richiamati al completamento delle operazioni.
Quali metodi sono consigliati per rilevare quando tutte le operazioni di I / O sono terminate, in altre parole tutte le richiamate sono state richiamate.
Poiché il codice viene eseguito su un singolo thread, la soluzione più primitiva sarebbe inizializzare una variabile contatore su 0 e incrementare questo contatore prima di ogni operazione di I / O e decrementarlo alla coda delle funzioni di callback. Si possono usare eventi o azioni (come in elm), tuttavia quella soluzione sarebbe molto simile.
Una possibile ottimizzazione: se più operazioni di I / O concatenate insieme (quindi una sola operazione I / O viene avviata nell'altra funzione di callback delle operazioni di I / O), allora sarebbe sufficiente incrementare il contatore all'inizio della catena e del decremento alla fine della catena, Tuttavia, se si verifica il caso in cui più operazioni di I / O vengono avviate in una funzione di callback, allora tutto il ramo deve essere gestito come una catena diversa.
C'è un modo più elegante di gestirlo?