vitali1995
@vitali1995

Как использовать Bluebird?

1. В чём преимущество Bluebird над Promise?
2. Как promisifyAll определяет, какие функции промиссифицировать? Он переопределяет Все функции? Делает ли он тоже самое с вложенными экспортируемыми объектами? Что происходит с синхронными функциями, такими как fs.readFileSync?
3. Как использовать promisifyAll в TypeScript?
4. Есть ли лучшие альтернативы для промиссификации? Например, промиссифицированный вариант стандартных библиотек node.js
  • Вопрос задан
  • 620 просмотров
Пригласить эксперта
Ответы на вопрос 1
@yogurt1
1. Очень ысбтрый
2. promisify получает функцию `fn` и возврщает функцию, которая возвращает внутри промис, который внутри себя вызывает `fn` c `arguments` + функция, которая получает другой `arguments` и смотрит, если arguments[0] (err) не равно null, то reject-ит промис этим err, иначе resolv-ит промис аргументами
Примерно так выглядит:
const promisify = fn => (...args) => new Promise((resolve, reject) => {
  fn(...args, (err, ...nextargs) => {
    if (err) return reject(err)
    return resolve(...nextargs)
  })
})

Код promisify выглядит чуть по-другому и там всякие-разные проверки, но то, что я привел является наглядным примером того, как выглядит promisify.
Ответ написан
Ваш ответ на вопрос

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

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