Создайте Promise, отклоняйте его при ошибке и разрешайте готовым Blob. Затем результат можно ожидать через await и обрабатывать обычным try/catch.
Как обернуть callback-экспорт PDF в Promise
Создайте 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, дополнительная обёртка не нужна; сначала проверьте её контракт.