Проміси

Проміси

Середня

Вступ

До появи класу Promise існував лише один спосіб працювати з асинхронним кодом: патерн колбеків.

Колбек - це функція, яку передають як аргумент іншій функції, і яку буде викликано, коли певна дія в тій іншій функції завершиться. Поширений підхід до таких функцій-колбеків полягає в тому, що вони приймають «помилку» як перший параметр (див. приклад нижче).

function callback(error, arg2, arg3) {}

Як це повʼязано з асинхронним кодом?

Історично колбеки використовували, щоб ми могли виконати певну роботу після завершення асинхронної задачі й не блокувати всю програму.

fetchProduct(productId, function (error, data) {
  if (error) {
    // Handle the error
  } else {
    // Do some work
  }
});

У наведеному вище прикладі функція fetchProduct (яка є асинхронною) приймає колбек як другий аргумент, який вирішує, що робити, коли дані про товар отримано.

Вказівки

У цієї вправи дві мети:

  1. Реалізувати функцію 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) => {});
  1. Перереалізувати наведені нижче вбудовані методи Promise (не використовуючи їх)
  • all: приймає масив промісів і виконується, коли всі вони виконані, або відхиляється, коли один із них відхилено.
  • allSettled: приймає масив промісів і виконується, коли всі вони або виконані, або відхилені.
  • race: приймає масив промісів і виконується або відхиляється зі значенням першого проміса, який виконався або відхилився.
  • any: приймає масив промісів і виконується, коли один із них виконано, або відхиляється, коли всі вони відхилені.
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
JavaScript Exercism

Час розпочати Проміси?

Зареєструйтеся на Exercism, щоб вивчати й опановувати JavaScript, а також 37 концепцій159 вправ та справжнє наставництво від людей, і все це безкоштовно.