我正在关注Stephen Grinder的教程,在那里他开始使用Promisify。
为此,他给出了非常模糊的解释,说redis需要回调函数,并且他发现非常不整洁+ redis不支持NodeJS中的promises。
然后他做了这样的事情
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)
出于某种原因,我发现该解释含糊不清,有人可以以最人性化的方式进行解释吗?像他的意思和我们在做什么?
当您要将回调函数转换为基于promise的函数时,将使用Promisify。如今,使用诺言是因为让开发人员可以编写更多结构化的代码。使用回调,您会遇到一个问题,称为
“厄运金字塔”
(http://callbackhell.com/)。其中每个函数在另一个函数内部被调用,并且代码开始水平增长。通过promise,您可以使用
then 来调用另一个函数。让我给你演示。
回叫示例
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))
如果您愿意,我可以提供一个更好的示例,但是我认为这将对您有所帮助
问题内容: 如果一个网页以…开头有什么区别 并且如果页面以 如果没有区别,我想我可以忽略元标头,因为我只想在所有IE版本中以最标准的方式呈现它。 问题答案: 这个答案是几年前发布的,现在的问题确实应该是 您_是否 _应该考虑 在您的网站上 使用 标记? 微软对其浏览器所做的更改(更多有关以下内容)。 根据您支持的Microsoft浏览器,您可能不需要继续使用该标记。如果您需要支持IE9或IE8,那
Java中Object有一个方法: public native int hashcode(); (1)hashcode()方法的作用 hashcode()方法主要配合基于散列的集合一起使用,比如HashSet、HashMap、HashTable。 当集合需要添加新的对象时,先调用这个对象的hashcode()方法,得到对应的hashcode值,实际上hashmap中会有一个table保存已经存进去
问题内容: 我是Java的新手,刚刚遇到了在方法中使用“ Throws”关键字的教程。我对此进行了一些研究,但仍然不太了解。 从我到目前为止所看到的,它告诉编译器在该特定方法中可能抛出某些异常。为什么我们需要告诉编译器呢?我已经在我的方法中仅使用try- catch语句制作了许多程序,并且效果很好-当然,这些try-catch语句可以管理异常,对吗? 问题答案: 您可以使用和如您所说 在 方法 内
本文向大家介绍什么是React.forwardRef?它有什么作用?相关面试题,主要包含被问及什么是React.forwardRef?它有什么作用?时的应答技巧和注意事项,需要的朋友参考一下 React.forwardRef 会创建一个React组件,这个组件能够将其接受的 ref 属性转发到其组件树下的另一个组件中。这种技术并不常见,但在以下两种场景中特别有用: 转发 refs 到 DOM 组件
本文向大家介绍什么是zoom?它有什么作用?相关面试题,主要包含被问及什么是zoom?它有什么作用?时的应答技巧和注意事项,需要的朋友参考一下 zoom是缩放比例,可以将元素进行缩放。 和css3中的transform:scale() 作用类似. 两者区别在于缩放的参照点不一样,zoom针对元素左上角,scale针对元素正中心
问题内容: 精油 这到底是什么! 编辑:如果可以的话,请您写一两行并说明其工作原理? 问题答案: 试试这个简单的程序,命名为 并尝试执行 注意什么是argv。