async function getRedisKeyAsync(key){ var value = await client.get(key); console.log('got value ' + value + ' for key ' + key + ' in redis'); return value; } async function getRedisKeyPromise(key){ client.get(key).then( (value) => { console.log('got value ' + value + ' for key ' + key + ' in redis'); return value; } ); }En ambos casos, el valor de la clave se obtiene de redis correctamente. Pero una persona que llama a estas funciones recupera el valor solo en el primer caso.
var value1 = await myredis.getRedisKeyAsync(req.params.key); // works var value2 = await myredis.getRedisKeyPromise(req.params.key); // value2 is undefined¿Cómo reescribo getRedisKeyPromise para que se comporte igual que getRedisKeyAsync?
Intente agregando return a la segunda función
async function getRedisKeyPromise(key) { return client.get(key).then( (value) => { console.log('got value ' + value + ' for key ' + key + ' in redis'); return value; } ); }Puedes simplemente simplificarlo:
function getRedisKeyPromise(key){ return client.get(key) }Hace la tarea equivalente como async o simplemente .then()