我正在尝试使用 Redis 存储 token 并在存在时检索它。如果没有,调用服务器获取 token :
async function sendData (req, data, cb) {
let synchronyToken = await hb.redis.client.getAsync('synchronyToken-' + config.getEnv());
if(synchronyToken === null) {
await request({
'method': authOptions.method,
'url': authOptions.url,
'proxy': authOptions.proxy,
'body': authOptions.body,
'headers': authOptions.headers
}, (error, response, body) => {
console.log(response);
synchronyToken = response.access_token;
hb.redis.client.set('synchronyToken-' + config.getEnv(), synchronyToken, {ttl: 3600});
})
}
}
await 不能在 Redis 上工作吗?
我在以下方面遇到错误:
let synchronyToken = await hb.redis.client.getAsync('synchronyToken-' + config.getEnv());
我担心如果我只是使用
let synchronyToken = hb.redis.client.getAsync('synchronyToken-' + config.getEnv());
我的代码将继续运行并检查同步 token ,而无需等待 Redis 回复。
最佳答案
假设您使用 node_redis 库,没有 client.getAsync 这样的函数,除非您像这样使用 promisify 定义它:
const {promisify} = require('util');
const getAsync = promisify(client.get).bind(client);
您还可以查看开箱即用的支持 async/await 的 ioredis 库:
关于node.js - 使用 Redis 异步等待函数存储 token 不起作用。 async await 是否适用于 Redis?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51489944/