使用Redis异步等待功能存储令牌不起作用。异步等待在Redis上起作用吗?

时间:2018-07-24 03:14:10

标签: node.js redis

我正在尝试将令牌存储在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答复。

1 个答案:

答案 0 :(得分:1)

假设您使用用户node_redis库,则没有诸如client.getAsync之类的功能,除非您使用promisify这样定义它:

const {promisify} = require('util');
const getAsync = promisify(client.get).bind(client);

您还可以直接检查支持异步/等待的ioredis库:

https://github.com/luin/ioredis