Estoy tratando de enviar solicitudes más de 1 vez y, a veces, recibo todas las solicitudes, a veces solo recibo 7 de 8, etc. Aquí está el ejemplo y el código, intento con Promise all pero dice tat Promise. todos no son irritables.
function requestToSend(nums_to_print) { if ( nums_to_print > 8 || nums_to_print < 1 || nums_to_print == '' || nums_to_print == null ) { errorArray.push( 'Entered lucky combinations ' + nums_to_print + ' cannot be greater than 8.' ); } else { let results = document.getElementById('results'); for (let i = 1; i <= nums_to_print; i++) { fetch('generateNumbers.php', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ nums: nums_to_print, }), }) .then((res) => res.json()) .then((data) => { if (data['error']) { let error = []; error.push(data['error']); errorToDisplay(error); } if (data) { let str = document.createElement('p'); for (let y = 0; y < data.length; y++) { str.innerText = i + '. ' + data[y]; } results.appendChild(str); } }) .catch((error) => { console.log(error); }); } results.innerHTML = ''; } errorToDisplay(errorArray); }Querrá refactorizar la búsqueda en una función separada que devuelva la promesa para un solo resultado.
Luego puede crear todas esas promesas, luego await su cumplimiento y luego procesarlas.
function generateNumbers(nums_to_print) { return fetch('generateNumbers.php', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ nums: nums_to_print, }), }).then((res) => res.json()); } async function requestToSend(nums_to_print) { if ( nums_to_print > 8 || nums_to_print < 1 || nums_to_print == '' || nums_to_print == null ) { errorToDisplay( 'Entered lucky combinations ' + nums_to_print + ' cannot be greater than 8.' ); return; } const resultsDiv = document.getElementById('results'); resultsDiv.innerHTML = ''; const promises = []; for (let i = 1; i <= nums_to_print; i++) { promises.push(generateNumbers(nums_to_print)); } const results = await Promise.all(promises); results.forEach((data, i) => { if (data.error) { errorToDisplay(data.error); } else { const str = document.createElement('p'); for (let y = 0; y < data.length; y++) { str.innerText = i + 1 + '. ' + data[y]; } resultsDiv.appendChild(str); } }); }