-1

I want to call a callback function in the scan function after for await loop ends. How can i do that?

let personObj = {};
let personArray = [];

 async function scan() {
    for await (const person of mapper.scan({valueConstructor: Person})) {
        decrypt(person.name, function () {
            personArray.push(personObj);
        });            
    }
}

Forexample i would like to call console.log(personArray) after the loop.

Adam Jungen
  • 407
  • 2
  • 7
  • 23

1 Answers1

3

You will want to promisify the callback function to use it in an async function:

function decryptAsync(value) {
    return new Promise(resolve => {
        decrypt(value, resolve);
    });
}
async function scan() {
    let personArray = [];
    for await (const person of mapper.scan({valueConstructor: Person})) {
        let personObj = await decryptAsync(person.name);
        personArray.push(personObj);
    }
    console.log(personArray)
}
Bergi
  • 630,263
  • 148
  • 957
  • 1,375