Eff
è un effetto sincrono. Viene utilizzato per la sequenza di codice JavaScript straniero efficace, ad esempio la generazione casuale di numeri, la lettura e la scrittura di valori mutabili, la scrittura sulla console e le eccezioni di lancio e cattura.
Aff
è un effetto monodisco asincrono. Può gestire e sequenziare codice asincrono efficace, come richieste AJAX, timeout e rete e file IO. Può anche eseguire effetti sincroni usando liftEff
. E fornisce anche un buon meccanismo per la gestione degli errori.
È possibile convertire da Eff
a Aff
utilizzando liftEff
(tutto ciò che non pausa è un esempio di qualcosa che viene lasciato pausa), ma nella direzione opposta non è possibile in generale. Le azioni Aff
possono essere eseguite in un contesto Eff
fornendo un callback.
IO
Haskell è simile a entrambi, ma più vicino a Aff
rispetto Eff
in quanto IO
azioni possono rappresentare le cose asincroni (vedi threadDelay
per esempio).
fonte
2016-06-06 17:43:40
Penso che valga la pena citare 'launchAff' che può essere usato per eseguire un calcolo' Aff' in modo sincrono, se necessario. È definito in 'Control.Monad.Aff'. L'inseguimento avrà una descrizione migliore di ciò che fa e di come funziona, rispetto a quello che posso inserire in un commento. –