Wikipedia potrebbe essere un buon punto di partenza per alcuni concetti generali e informazioni di base.
Questa citazione da quella pagina lo riassume, ma probabilmente ha bisogno di un po 'di conoscenza per capirlo appieno.
In programming, asynchronous events are those occurring independently of the main program flow. Asynchronous actions are actions executed in a non-blocking scheme, allowing the main program flow to continue processing.
Quindi, con la programmazione sincrona l'utente avvia un'azione sul programma, ma deve attendere che l'operazione venga completata prima di poter fare qualsiasi altra cosa. Un esempio potrebbe essere il salvataggio di un file su disco, non è possibile fare altro finché il file non viene salvato.
Con la programmazione asincrona l'utente avvia un'azione, ma può continuare a svolgere altri lavori mentre l'operazione viene completata. Il programma notifica quindi all'utente in qualche modo che è finito. Un esempio qui potrebbe essere la stampa di un documento. Qui si avvia la stampa quindi (dopo alcune impostazioni) è possibile continuare mentre il documento viene inviato alla stampante. Ricevi una sorta di notifica che la stampa è completa.
Le applicazioni asincrone si affidano ai processi figli multithreading o spawning che svolgono il lavoro.
Le callback sono un meccanismo in cui il codice chiamante può fare qualcosa quando l'operazione asincrona è completa. Registrerai la callback con il processo a lunga esecuzione in qualche modo poi, una volta completato, il codice definito dal callback verrà eseguito.