iRo*_*tia 3 javascript redis node.js promise
我正在关注 Stephen Grinder 教程,他开始使用 Promisify。
为此他给出了非常模糊的解释,说redis需要一个回调函数,他发现非常不整洁+redis不支持NodeJS中的promise
然后他做了这样的事情
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)
Run Code Online (Sandbox Code Playgroud)
由于某种原因,我发现解释很模糊,有人可以用最人性化的方式解释一下吗?比如他的意思是什么以及我们正在做什么?
Ped*_*lva 13
当您想要将回调函数转换为基于 Promise 的函数时,可以使用 Promisify。如今,使用 Promise 是因为让开发人员可以编写更结构化的代码。对于回调,你会遇到一个称为末日金字塔(http://callbackhell.com/ )的问题。每个函数都在另一个函数内部调用,并且代码开始水平增长。通过 Promise,您可以使用then来调用另一个函数。我来给你展示。
回调示例
a (function (data1) {
b (function (data2) {
c (function (data3) {
d (function (data4) {
e (function (data5) {
f (function (data6) {
// The Egyptians would be jealous of this pyramid!
})
}
})
})
})
})
Run Code Online (Sandbox Code Playgroud)
承诺示例
a(data1)
.then(return b(data2))
.then(return c(data3))
.then(return d(data4))
.then(return e(data5))
Run Code Online (Sandbox Code Playgroud)
如果您愿意,我可以发布一个更好的示例,但我认为这会对您有所帮助