До появи класу Promise існував лише один спосіб працювати з асинхронним кодом: патерн колбеків.
Колбек - це функція, яку передають як аргумент іншій функції, і яку буде викликано, коли певна дія в тій іншій функції завершиться. Поширений підхід до таких функцій-колбеків полягає в тому, що вони приймають «помилку» як перший параметр (див. приклад нижче).
function callback(error, arg2, arg3) {}
Як це повʼязано з асинхронним кодом?
Історично колбеки використовували, щоб ми могли виконати певну роботу після завершення асинхронної задачі й не блокувати всю програму.
fetchProduct(productId, function (error, data) {
if (error) {
// Handle the error
} else {
// Do some work
}
});
У наведеному вище прикладі функція fetchProduct (яка є асинхронною) приймає колбек як другий аргумент, який вирішує, що робити, коли дані про товар отримано.
У цієї вправи дві мети:
promisify, яка перетворює функцію, що використовує «шаблон зворотного виклику», на функцію, яка повертає Promise. Погляньмо на приклад нижче.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 (не використовуючи їх)all: приймає масив промісів і виконується, коли всі вони виконані, або відхиляється, коли один із них відхилено.allSettled: приймає масив промісів і виконується, коли всі вони або виконані, або відхилені.race: приймає масив промісів і виконується або відхиляється зі значенням першого проміса, який виконався або відхилився.any: приймає масив промісів і виконується, коли один із них виконано, або відхиляється, коли всі вони відхилені.Зареєструйтеся на Exercism, щоб вивчати й опановувати JavaScript, а також 37 концепцій159 вправ та справжнє наставництво від людей, і все це безкоштовно.