Mielőtt megjelent a Promise osztály, az aszinkron kód kezelésének csak egyetlen módja létezett: a callback-minta.
A callback egy olyan függvény, amelyet argumentumként adunk át egy másik függvénynek, és amely akkor hívódik meg, amikor a másik függvényben valamilyen művelet befejeződött. Az ilyen callback-függvényeknél gyakori minta, hogy első paraméterként egy „error” értéket fogadnak (lásd az alábbi példát).
function callback(error, arg2, arg3) {}
Hogyan kapcsolódik mindez az aszinkron kódhoz?
Történelmileg a callback-minta tette lehetővé, hogy egy aszinkron feladat befejeződése után elvégezzünk valamilyen munkát, anélkül hogy blokkolnánk az egész programot.
fetchProduct(productId, function (error, data) {
if (error) {
// Handle the error
} else {
// Do some work
}
});
A fenti példában a fetchProduct függvény (amely aszinkron) második argumentumként egy callback-függvényt kap, amely eldönti, mi történjen, amikor a termék adatai megérkeztek.
Ennek a feladatnak két célkitűzése van:
promisify függvényt, amely egy „callback-mintát” használó függvényt olyan függvénnyé alakít, amely egy Promise-t ad vissza. Nézd meg az alábbi példát.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-metódusokat (anélkül, hogy használnád őket)all: egy promise-tömböt vesz át, és akkor teljesül, amikor mindegyik teljesült, vagy akkor utasítja el, amikor az egyikük elutasításra kerül.allSettled: egy promise-tömböt vesz át, és akkor teljesül, amikor mindegyik vagy teljesült, vagy elutasításra került.race: egy promise-tömböt vesz át, és az első teljesülő vagy elutasításra kerülő promise értékével teljesül vagy utasítja el.any: egy promise-tömböt vesz át, és akkor teljesül, amikor az egyikük teljesül, vagy akkor utasítja el, amikor mindegyik elutasításra kerül.Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) JavaScript nyelvet 37 fogalom159 feladat segítségével, valódi emberi mentorálással, mindez ingyen.