C'è una ragione concreta per preferire l'esecuzione di callback alle funzioni prima o dopo l'uscita dalla funzione chiamata? Esempio
function doSomethingPossiblyAsync(callback) {
if (errorDetectedImmediately) {
// call callback immediately before doSomethingPossilbyAsync has returned
callback(someError);
}
...
}
vs
function doSomethingPossiblyAsync(callback) {
if (errorDetectedImmediately) {
// call callback after doSomethingPossiblyAsync has returned
process.nextTick(function() {
callback(someError);
}
}
...
}
Preferisco il secondo perché lo rende coerente con la asincurità del percorso non-error, ma non ho idea se sono razionale o se non ha importanza.
Si noti che per EventEmttiers è importante dal momento che non è possibile aggiungere gli ascoltatori prima di aver creato l'oggetto, il che significa che non si devono emettere eventi fino a dopo la creazione, anche se rilevati durante la creazione, ma qualche ragione logica analoga si applica ai callback?