Верните обычную функцию, которая передаёт исходные аргументы и callback внутрь Promise, сохраняя this вызывающей стороны.
Реализуйте функцию promisify: она принимает функцию с error-first callback (loadScript) и возвращает новую функцию, которая принимает любые аргументы, добавляет error-first callback и оборачивает вызов в Promise.
Верните обычную функцию, которая передаёт исходные аргументы и callback внутрь Promise, сохраняя this вызывающей стороны.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Верните обычную функцию, которая передаёт исходные аргументы и callback внутрь Promise, сохраняя this вызывающей стороны.
Предполагается последний аргумент error-first callback (error, result) с одним результатом и null/undefined при успехе.
function promisify(fn) {
return function (...args) {
return new Promise((resolve, reject) => {
fn.call(this, ...args, (error, result) => {
if (error != null) reject(error);
else resolve(result);
});
});
};
}
Синхронный throw внутри вызова тоже отклонит Promise. Ошибку, выброшенную позже внутри таймера вместо вызова callback, такая обёртка перехватить не может.