Как обернуть callback-экспорт PDF в Promise

Создайте Promise, отклоняйте его при ошибке и разрешайте готовым Blob. Затем результат можно ожидать через await и обрабатывать обычным try/catch.

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

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

Создайте Promise, отклоняйте его при ошибке и разрешайте готовым Blob. Затем результат можно ожидать через await и обрабатывать обычным try/catch.

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

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

Условие

Учебная функция exportPdf(html, callback) вызывает callback(error, blob) ровно один раз. Это контракт адаптера, не конкретной версии библиотеки. Перепишите использование через async/await.

Ответ

Создайте Promise, отклоняйте его при ошибке и разрешайте готовым Blob. Затем результат можно ожидать через await и обрабатывать обычным try/catch.

Обёртка:

function exportPdfAsync(html) {
  return new Promise((resolve, reject) => {
    exportPdf(html, (error, blob) => {
      if (error) reject(error);
      else resolve(blob);
    });
  });
}

Использование внутри async-функции: const blob = await exportPdfAsync(html). Если реальная библиотека уже возвращает Promise, дополнительная обёртка не нужна; сначала проверьте её контракт.

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

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

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

Подробнее