I have a function containing a loop that iterates over an array of objects. On each iteration, I need to execute an asynchronous function and get a value back from the request however, I need each iteration of the for loop to pause and wait for the response before continuing.
For example:
const tokeniseCustomer = async () => {
const object [{"val1":1,"val2":2},{"val1":"a","val2":"b"}];
for (let index = 0; index < object.length; index += 1) {
const data = await getData(object[index]);
console.log(data);
//wait for data before progressing to next loop iteration
}
};
I thought by adding the "await" keyword in the above example, the loop would wait for the getData function to return a value.
The problem with the above code is that nothing gets logged to the console. I tried troubleshooting this by adding some extra logging. For example:
const tokeniseCustomer = async () => {
const object [{"val1":1,"val2":2},{"val1":"a","val2":"b"}];
for (let index = 0; index < object.length; index += 1) {
console.log('a')
const data = await getData(object[index]);
console.log('b');
console.log(data);
//wait for data before progressing to next loop iteration
}
};
The above code logs 'a' but not 'b'.
This is what my getData function looks like:
const getData = async (object) => {
//get the data from MSSQL and return it
const result = await MSSQLFUNCTION(object);
return result;
};
I am really not sure what I am doing wrong. Am I incorrect in using for loops with await?