What does Promisify do?

2019-08-27 13:59发布

I was following Stephen Grinder tutorial where he started using Promisify.

For that he gave very vague explanation saying that redis needs a callback function and he finds that very untidy + redis does not support promises in NodeJS

And afterwards he did something like this

     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)

For some reason I found the explanation to be vague, Can someone please explain this in the most human way? like what does he mean and what we are doing?

1条回答
放荡不羁爱自由
2楼-- · 2019-08-27 14:15

Promisify is used when you want to convert a callback function into a promise based function. Nowadays, is used promises because let the developers to write more structured code. With callbacks you have a problem called pyramid of doom (http://callbackhell.com/). Where each function is called inside the other and the code starts to grow horizontally. With promises you can use then to call another function. Let me show you.

Callback Example

 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!
          })
        }  
      })
    })
  })
})

Promise example

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

If you want I can post a better example but I think that this will help you

查看更多
登录 后发表回答