我正在尝试将令牌存储在Redis中,如果令牌存在,则将其检索。如果没有,请致电服务器以获取令牌:
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});
})
}
}
等待在Redis上不起作用吗?
我收到以下错误消息:
let synchronyToken = await hb.redis.client.getAsync('synchronyToken-' + config.getEnv());
我怕如果我只用
let synchronyToken = hb.redis.client.getAsync('synchronyToken-' + config.getEnv());
我的代码将继续运行并检查synchony令牌,而无需等待Redis答复。
答案 0 :(得分:1)
假设您使用用户node_redis库,则没有诸如client.getAsync之类的功能,除非您使用promisify这样定义它:
const {promisify} = require('util');
const getAsync = promisify(client.get).bind(client);
您还可以直接检查支持异步/等待的ioredis库: