In questa lezione e l'esercizio che segue,
parleremo specificamente di Callback Hell.
Il problema che si verifica quando si scrivono
callback nel nodo e in particolare callback e nodo nidificati.
Considereremo anche le promesse come un modo per affrontare il problema dell'inferno di richiamata.
Per darvi un'idea di ciò che si tradurrà il tipico problema di Callback Hell,
rivisitiamo il file index.js dall'esercizio precedente.
Mentre ne stavo parlando nell'esercizio precedente
si nota che per ciascuna delle operazioni che eseguiamo, l'
operazione successiva è inclusa all'interno della funzione di callback qui
e così via fino a formare una struttura simile a piramide andare di nuovo.
Quindi vedi questa struttura piramidale che sorge all'interno del tuo codice.
Ora immagina di dover eseguire più operazioni nidificate come questa,
il tuo codice diventerà molto presto,
molto complesso e non così facile da decifrare.
Ora questo è ciò che nel mondo node.js,
si riferiscono a come Callback Hell.
Ci sono stati diversi modi per mitigare il problema che si pone.
Ora puoi evitarlo completamente a causa del fatto
che hai determinate operazioni che devono essere
completate prima che l'operazione successiva possa essere avviata,
ma possiamo riorganizzare il codice in modo da mitigare questo problema.
Le promesse sono uno di questi modi per affrontare questo.
Quindi, per riassumere ciò che abbiamo appena discusso, il
codice di callback fortemente annidato,
causa il problema Callback Hell e
deriva dalla nostra tendenza a scrivere programmi dall'alto verso il basso.
Siamo ancora bloccati con il nostro modo sequenziale di scrivere codice e
quindi vediamo più conveniente scrivere codice dall'alto verso il basso,
e guardarlo come se stesse eseguendo in quell'ordine.
Ora possiamo aggirare il problema Callback Hell
non utilizzando funzioni anonime per i callback ma invece,
dichiarando quelle funzioni con nomi specifici,
e quindi evitare il modo in cui scriviamo il codice come hai visto qui.
Questo è uno degli approcci che le persone adottano per affrontare il problema Callback Hell.
Ci sono molti altri approcci che sono stati suggeriti,
i collegamenti a un paio di articoli a questo proposito sono forniti nelle risorse aggiuntive.
Ma in questa particolare lezione,
mi concentrerò su un approccio particolare che
viene utilizzato per affrontare il problema Callback Hell,
cioè l'uso delle promesse.
Quindi possiamo usare le promesse per domare il problema dell'inferno di callback in una certa misura.
Vedremo come le promesse ci aiutano a questo proposito e
nell'esercizio vedremo come perché il driver NODE-MONGO DB
supporta già un'interfaccia proxy possiamo sfruttarlo per riscrivere il nostro codice
per sfruttare il supporto promettente nel driver MONGO DB.
Riassumendo brevemente cos'è una promessa.
Una promessa è un meccanismo che supporta il calcolo asincrono.
Quindi, se hai quantità di lavoro che deve essere fatto,
la promessa funge da proxy per un valore che
non è noto al momento ma la promessa è data a te.
Ma quando il valore diventa disponibile,
sarà disponibile in futuro.
Quindi la promessa rappresenta un segnaposto per quel valore.
Se il valore risulta correttamente,
la tua promessa risulta correttamente e puoi avere
un pezzo di codice eseguito per gestire il fatto che la promessa è stata risolta correttamente, in
caso contrario gestisci l'errore in quella situazione.
Quindi, una promessa si risolverà in risoluzione o il rifiuto della promessa.
Una promessa in sospeso potrebbe risolvere
quando il valore è ottenuto correttamente, quindi in quel caso,
si risolverà o ciò che chiamiamo come adempimento della promessa.
Quindi, quando la promessa viene risolta,
avrai un pezzo di codice che
gestisce il fatto che la promessa è stata risolta.
Se la promessa viene rifiutata,
dovresti anche gestire quella situazione
il rifiuto della promessa corrispondentemente all'interno del tuo codice.
Quindi questa è la ragione ogni volta che crei una promessa,
fornisci solo le opzioni di risoluzione e rifiuto da essa.
L' opzione di risoluzione è in genere gestita dal medico quindi opzione per la vostra promessa.
Allora perché usiamo le promesse?
Le promesse vengono utilizzate perché affronta
il problema dell'inferno di callback in larga misura e le promesse possono essere modificate.
Ad esempio, se hai una promessa che a
sua volta attiva una chiamata a un'altra che restituirà una promessa.
La gestione della promessa può essere modificata nell'handle della promessa precedente.
Quindi puoi avere un sacco di
chiamate, quindi che gestiranno il ritorno del valore.
Ora vedremo l'uso di questo nell'esercizio che segue questa lezione.
Per consumare una promessa,
si registrerà una funzione di callback appropriata per
quando al consumatore di una promessa viene notificata
l'adempimento o il rifiuto della promessa.
Quindi i callback sono registrati attraverso il.then () alla promessa.
Userai il.catch () per rilevare gli errori all'interno della promessa di ritorno.
Ora i metodi.then () possono essere incatenati
insieme come si vedrà nell'esercizio che segue.
Ad esempio, normalmente gestiresti una promessa
concatenando il.then () e il.catch () al valore di promessa.