--- sidebar_position: 5 --- # Промисификация Промисификация – это длинное слово для простого преобразования. Мы берём функцию, которая принимает колбэк и меняем её, чтобы она вместо этого возвращала промис. Такие преобразования часто необходимы в реальной жизни, так как многие функции и библиотеки основаны на колбэках, а использование промисов более удобно, поэтому есть смысл «промисифицировать» их. 💥 **На заметку:** - Промисификация – это отличный подход, особенно, если вы будете использовать async/await (см. следующую главу об Async/await) но она не является тотальной заменой любых колбэков. - Помните, промис может иметь только один результат, но колбэк технически может вызываться сколько угодно раз. - Поэтому промисификация используется для функций, которые вызывают колбэк только один раз. Последующие вызовы колбэка будут проигнорированы. ```js // promisify(f, true), чтобы получить массив результатов function promisify(f, manyArgs = false) { return function (...args) { return new Promise((resolve, reject) => { function callback(err, ...results) { // наш специальный колбэк для f if (err) { reject(err); } else { // делаем resolve для всех results колбэка, если задано manyArgs resolve(manyArgs ? results : results[0]); } } args.push(callback); f.call(this, ...args); }); }; }; // использование: f = promisify(f, true); f(...).then(arrayOfResults => ..., err => ...) ``` 🚀 **Источник: [https://learn.javascript.ru/promisify](https://learn.javascript.ru/promisify)**