¿Cómo obtener el valor real del comando "get" no es un "verdadero"?
Hola @yuany : esta es una biblioteca tradicional de Node.js en la que proporciona devoluciones de llamada para ejecutar de forma asincrónica cuando los resultados están listos.
Es decir:
client.get("foo", function (error, value) { /* ... */ })
Este es el resultado de la forma en que funciona Node.js, las operaciones de E / S se realizan de forma asincrónica.
El valor de retorno de estas funciones no es el valor.
Gracias, @brycebaril He probado la función de esta manera:
var result = client.get ("foo", function (error, value) {return value});
alert (result); // el resultado será 'falso' o 'verdadero', pero quiero devolver el valor es el valor real por la clave de redis.
Hola @yuany : así no es como funciona el nodo cuando está haciendo IO.
La devolución de llamada proporciona un contexto para ejecutar cuando el resultado está disponible. Todos los demás códigos que no dependen del IO se ejecutarán mientras la operación IO está en cola, se ejecuta y se espera la respuesta.
Este es un buen lugar para aprender más sobre cómo funciona: https://github.com/maxogden/art-of-node#callbacks
P.ej
client.get("foo", function (error, value) {
// value is only defined in the context of this callback
console.log(value)
})
// this parent code has already executed, before it asked Redis for the value
Gracias, @brycebaril Ahora tengo claro el problema de que la ejecución de la función de devolución de llamada es asincrónica.
Comentario más útil
Hola @yuany : esta es una biblioteca tradicional de Node.js en la que proporciona devoluciones de llamada para ejecutar de forma asincrónica cuando los resultados están listos.
Es decir:
Este es el resultado de la forma en que funciona Node.js, las operaciones de E / S se realizan de forma asincrónica.
El valor de retorno de estas funciones no es el valor.