//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.