alexbuki
@alexbuki
программист js

Почему не работает промис?

Пытаюсь обернуть callback функцию в функцию возвращающую промис.
Не могу понять почему промис не срабатывает.
Может не правильно вызываю?
При выполнении кода не попадаем в console.log
const bb = (callback, x, y) => setTimeout(() => callback(null, x + y), 200)
function promisify (f) {
  return function (...args) { // возвращает функцию-обёртку
    return new Promise((resolve, reject) => {
      function callback (err, result) { //  специальный колбэк для f
        if (err) {
          return reject(err)
        } else {
          resolve(result)
        }
      }

      args.push(callback) // добавляем колбэк в конец аргументов f

      f.call(this, ...args) // вызываем оригинальную функцию
    })
  }
};
const callback = (err, data) => err || data
const stat = promisify(bb);
stat(callback, 1, 2).then(function (stats) {
  console.log("Got stats", stats);
}).catch(function (err) {
  console.error("Yikes!", err);
});
  • Вопрос задан
  • 171 просмотр
Пригласить эксперта
Ответы на вопрос 1
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
У вас функции bb принимает колбэк первым аргументом, а не последним, а полученный колбэк от обертки Вы никак не используете
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы