Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

187
Vistas
local variable is not updated after assigning it from redis even after using promise.all
//local variables
let b1 = [] 
let b2 = []
let b3 = []

async function start(){
    //inserting some data to redis keys a1, a2 and a3
    let data = []
    for(i=1; i<=3; i++){
        data.push(i)
        client.set('a'+i, JSON.stringify(data))
    }

    //now in redis we have a1->[1] , a2->[1,2] and a3->[1,2,3]

    //array for promise.all
    let arrayX = []

    for(i=1; i<=3; i++){
        arrayX.push(y(i).then(result => {
            eval('b'+i + '=' + result) //updating the value from redis into local variables b1, b2 and b3
            console.log(eval('b'+ i)) //here the values of b1, b2 and b3 are displayed
        }))
    }
    //waiting to update b1, b2, b3
    await Promise.all(arrayX).then(()=>{
        for(i=1; i<=3; i++){
            console.log(eval('b'+ i)) //here it is displaying empty array
        }
        //here I want to call another function where I want to use the values of b1, b2 and b3
    })
}
//reading from redis and returning value
function y(i, result){
    return new Promise((resolve, reject) => {
        client.get('a'+i, async function(err,result){
            resolve(result)
        })
    })
}

start()

After assigning the local variables with values read from redis, they are showing empty when I try to access it later. But if I display it right after I assign all the values are displayed. I have used promises and promise.all to hand asynchronous but it still doesn't work. Please help. Thanks.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Thanks @briosheje and @VLAZ. Here is the working code. I have used object and removed eval.

//local variable
let x = {}

async function start(){
    //inserting some data to redis keys a1, a2 and a3
    let data = []
    for(i=1; i<=3; i++){
        data.push(i)
        client.set('a'+i, JSON.stringify(data))
        client.expire('a'+i, 3600);
    }

    //now in redis we have a1->[1] , a2->[1,2] and a3->[1,2,3]

    //array for promise.all
    let arrayX = []

    for(i=1; i<=3; i++){
        arrayX.push(y(i))
    }
    //waiting to update x
    await Promise.all(arrayX).then(()=>{
        for(i=1; i<=3; i++){
            console.log(x['b'+ i]) //here it is displaying all the values
        }
    })
}
//reading from redis and updating value in local variable
function y(i, result){
    return new Promise((resolve, reject) => {
        client.get('a'+i, async function(err,result){
            x['b'+i] = result
            resolve(result)
        })
    })
}

start()
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda