Prima dell'introduzione della classe Promise, c'era un solo modo per gestire il codice asincrono: il pattern callback.
Una callback è una funzione che viene passata come argomento a un'altra funzione e verrà chiamata quando un'azione all'interno di quell'altra funzione è terminata. Un pattern comune per queste funzioni callback è che accettano un "error" come primo parametro (vedi l'esempio qui sotto).
function callback(error, arg2, arg3) {}
Come si collega tutto questo al codice asincrono?
Storicamente, le callback sono state usate per permetterci di svolgere del lavoro dopo che un'attività asincrona era stata completata, senza bloccare l'intero programma.
fetchProduct(productId, function (error, data) {
if (error) {
// Handle the error
} else {
// Do some work
}
});
Nell'esempio qui sopra, la funzione fetchProduct (che è asincrona) prende una callback come secondo argomento, che decide cosa fare quando i dati del prodotto sono stati recuperati.
Questo esercizio ha due obiettivi:
promisify che trasforma una funzione che usa il «pattern callback» in una funzione che restituisce una Promise. Guarda l'esempio qui sotto.function fetchProduct(productId, function(error, data) {
if (error) {
// Handle the error
} else {
// Make something with your data
}
})
const fetchProductAsPromise = promisify(fetchProduct);
// Now you got a function `fetchProductAsPromise`
// that returns a promise
fetchProductAsPromise(productId)
.then((data) => {})
.catch((error) => {});
Promise (senza usarli)all: prende un array di promesse e si risolve quando tutte sono state risolte, oppure si rifiuta quando una di esse viene rifiutata.allSettled: prende un array di promesse e si risolve quando tutte si risolvono o si rifiutano.race: prende un array di promesse e si risolve o si rifiuta con il valore della prima promessa che si risolve o si rifiuta.any: prende un array di promesse e si risolve quando una di esse si risolve, oppure si rifiuta quando tutte si rifiutano.Iscriviti a Exercism per imparare e padroneggiare JavaScript con 37 concetti159 esercizi e il mentoring di persone reali, tutto gratis.