Колбэкификация

Эта задача похожа на promisify, но нужно наоборот из асинхронной функции создать функцию, работающую на колбэках.

Например, нам дана функция, которая принимает два числа и возвращает промис с суммой этих чисел.

async function sum(a, b) { if (Math.random() < .5) { return a + b; // success } throw "error"; // bad luck }

Тогда с помощью функции callbackify мы можем создать новую функцию, которая будет принимать три аргумента. Первые два — это числа, которые мы складываем. А третий — это колбэк, который вызывается, когда функция завершила работу.

Если она завершилась неудачно, то колбэк вызывается с одним аргументом — ошибкой.

Если она завершилась успешно, то колбэк вызывается с двумя аргументами — первый аргумент, означающий ошибку, равен null, а второй равен результату вызова.

const callbackifiedSum = callbackify(sum); callbackifiedSum(2, 5, (err, result) => { if (err === null) { console.log(result); // 7 } });