gpt4 book ai didi

node.js - 如何在node.js中将 `hgetall`中的值传出

转载 作者:可可西里 更新时间:2023-11-01 11:47:57 24 4
gpt4 key购买 nike

我用的是redis,这是我的代码

const redis = require("redis"), client = redis.createClient()
let count1, count2, countall
client.hgetall('onekey', function(err, object) {
if (object) {
count1 = object.onevalue
console.log(count1)
} else {
count1 = 2
}
client.quit()
})
client.hgetall('twokey', function(err, object) {
if (object) {
count2 = object.twovalue
console.log(count2)
} else {
count2 = 3
}
client.quit()
})
countall = count1 + count2
console.log(countall)

我运行这段代码,我可以得到 count1count2 的结果,但是 console.log(countall) 显示 undefined,我不明白为什么,我怎样才能将值传递到函数 block 之外?非常感谢

最佳答案

您可以使用多种方法,Promises、async/await、async module。

阅读它们。对于您的代码,您可以像这样使用。

我已经为您提供了解决方案,但要优化检查 Promises 、 async/await 、 async 模块。

const redis = require("redis"), client = redis.createClient()
let count1, count2, countall
client.hgetall('onekey', function(err, object) {
if (object) {
count1 = object.onevalue
console.log(count1)
} else {
count1 = 2
}
client.quit()
client.hgetall('twokey', function(err, object) {
if (object) {
count2 = object.twovalue
console.log(count2)
} else {
count2 = 3
}
countall = count1 + count2
console.log(countall)
client.quit()
})
})

让我解释一下为什么这不起作用。

客户端调用都是异步调用,它们会在主线程之外执行,其他代码会在不等待它们的情况下执行。

关于node.js - 如何在node.js中将 `hgetall`中的值传出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51551996/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com