Нужно написать функцию, которая возвращает функцию, принимающую любые аргументы, и оборачивает callback (с колбэк-стилем error-first) в промис (promisify).

promisify возвращает обычную функцию, которая передаёт исходные аргументы и error-first callback, а результат callback превращает в resolve или reject.

Короткий ответ

Что ответить на собеседовании

promisify возвращает обычную функцию, которая передаёт исходные аргументы и error-first callback, а результат callback превращает в resolve или reject.

Подробный разбор

Ответ с пояснениями

promisify возвращает обычную функцию, которая передаёт исходные аргументы и error-first callback, а результат callback превращает в resolve или reject.

function promisify(fn) {
  return function (...args) {
    const context = this;
    return new Promise((resolve, reject) => {
      fn.call(context, ...args, (error, value) => {
        if (error != null) reject(error);
        else resolve(value);
      });
    });
  };
}

Здесь контракт — callback(error, value), успешная ошибка равна null/undefined. Синхронное исключение внутри executor тоже отклоняет Promise. Для навсегда привязанного метода используйте bind; несколько успешных аргументов требуют отдельной договорённости о результате.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее