Necesito ejecutar una función para cada elemento de la matriz... El problema es que, para cada ejecución (excepto la primera), se supone que la respuesta de la ejecución anterior es uno de los parámetros... ¿Cómo me aseguro ¿La próxima iteración de la función no se ejecuta hasta que la respuesta de la última esté en su lugar?
Actualmente lo estoy haciendo como algo como esto, pero sin éxito:
array --> array with n items callResponse --> array with (n-1) items callResponse[0] is a required parameter for the function executing for array[1] and so on.... array = [ ........ ] callResponse = [....empty x (n-1)....] for (var i in array) { var body = { parameter1: array[i], parameter2: i = 0 ? '' : callResponse[i-1], } axios.get('', body).then((response) => { callResponse[i] = response.data.x } }Se puede hacer fácilmente con la sintaxis async/await . Solo espere hasta que finalice la solicitud y luego continúe con la siguiente solicitud:
(async () => { // await keyword only accept in an async function const array = []; const result = []; for (const item of array) { // for..of instead of for..in const body = { parameter1: item, parameter2: result[result.length - 1] || '', // get the last response }; const res = await axios.post('url', body); // wait... result.push(res.data.x); // save the response and continue } console.log('Result: ', result); // all responses })();