Что делает Promisify? - PullRequest
       5

Что делает Promisify?

0 голосов
/ 10 ноября 2018

Я следовал учебному пособию Стивена Гриндера, где он начал использовать Promisify.

Для этого он дал очень смутное объяснение, сказав, что redis нужна функция обратного вызова, и он обнаружил, что очень неопрятный + redis не поддерживает обещания в NodeJS

А потом он сделал что-то подобное

     const redis = require('redis')
      const redisURL = 'redis://127.0.0.1:6379';
      const redisClient = redis.createClient(redisURL);
      const util = require('util')

      client.get = util.promisify(client.get)

      const cachedBlog = await client.get(req.user.id)

Почему-то я нашел объяснение неопределенным. Может ли кто-нибудь объяснить это самым человечным образом? как то, что он имеет в виду и что мы делаем?

1 Ответ

0 голосов
/ 10 ноября 2018

Promisify используется, когда вы хотите преобразовать функцию обратного вызова в функцию, основанную на обещаниях. В наше время используются обещания, потому что позволяют разработчикам писать более структурированный код. С обратными вызовами у вас есть проблема под названием пирамида гибели (http://callbackhell.com/)., где каждая функция вызывается внутри другой, а код начинает расти горизонтально. С обещаниями вы можете использовать , а затем для вызова другой функции. Позвольте мне показать вам.

Пример обратного вызова

 a (function (data1) {
  b (function (data2) {
    c (function (data3) {
      d (function (data4) {
        e (function (data5) {
          f (function (data6) {
            // The Egyptions would be jealous of this pyramid!
          })
        }  
      })
    })
  })
})

Пример обещания

a(data1)
.then(return b(data2))
.then(return c(data3))
.then(return d(data4))
.then(return e(data5))

Если вы хотите, я могу опубликовать лучший пример, но я думаю, что это поможет вам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...