const handleEnter = (e) => { if (e.key === 'Enter') { const bulkSearchString = e.target.value; const jobIdArray = bulkSearchString.split(',').map((value) => value.trim()); jobIdArray.map((jobId, i) => fetchEachJob(jobId, atsFilter.type) .then(result => { if (result.length) { const value = result[0]; const index = findIndex(formValuesId, (o) => o === value.id); if (index < 0) { setTimeout( () => { addNewOption( value, atsFilter.filterType, atsFilter.type, atsFilter.radio, true ); }, 500 * i ); } } })); e.preventDefault(); } };fetchEachJob: llamada a la API
addNewOption: función síncrona
En el código anterior, agregué setTimeout para que la ejecución de addNewOption se complete antes de que se llame con nuevos parámetros. Sin setTimeout, la siguiente llamada cancela addNewOption, por lo que solo devuelve el resultado de la última llamada. El código funciona bien con setTimeout pero no es la solución óptima.
¿Hay alguna manera de esperar a que termine esta función síncrona antes de que la siguiente iteración la llame?