Tengo una lista de ID, es decir: [3,6,7] Quiero obtener todos los objetos de la API que tienen 3,6 y 7 como id. Puedo buscarlo con una sola identificación. Me gusta esto:

 const response = await fetch(`http://localhost:3000/api`, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json; charset=utf-8',
    },
    body: JSON.stringify({
      id: 7,
    }),
  });

¿Cómo puedo buscar con diferentes identificadores? gracias por adelantado.

0
Negarin 29 oct. 2019 a las 12:51

3 respuestas

La mejor respuesta

Puede usar Promise.all https: // developer.mozilla.org/vi/docs/Web/JavaScript/Reference/Global_Objects/Promise/all

const promises = [3,6,7].map(id => {
  return fetch(`http://localhost:3000/api`, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json; charset=utf-8',
    },
    body: JSON.stringify({
      id,
    }),
  })
})

const response = await Promise.all(promies)
console.log(responese)
1
Giang Le 29 oct. 2019 a las 09:55

fetch(...) devuelve una promesa.

await fetch(...) Obtiene el resultado de esa promesa devuelta.

Entonces, para hacer más de una llamada a la vez, debe manejar varias promesas.

const p1 = fetch(...)
const p2 = fetch(...)
const p3 = fetch(...)

const [p1Result, p2Result, p3Result] = await Promise.all(p1, p2, p3);

Pondrá los resultados de esos buscadores en los concursos de resultados.

0
liamgbs 29 oct. 2019 a las 09:58

Es mejor poner sus solicitudes en una matriz y esperar a que finalicen.

const myLogic = () => {
    //Put ids in function and get responses
    getByIds([3,6,7]).then(responses => {
        console.log(responses);        
    });
}

const getByIds = async (ids) => {
    //put all promises in an Array so we can let them run and be awaited
    //await is bad practise in loops and usually does not work
    let requests = [];
    let responses = [];

    for (let id in ids)
        requests.push(fetch(`http://localhost:3000/api`, {
            method: 'POST',
            body: JSON.stringify({ id }),
            headers: { 'Content-Type': 'application/json; charset=utf-8' },
        })
            //Add response to array
            .then(response => responses.push(response))
            .catch(err => console.log(err)));

    //Await all requests
    await Promise.all(requests);

    //return all responses
    return responses;
}
0
Nick Prozee 29 oct. 2019 a las 10:02