es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Javascript vuelve a ejecutar la función hasta que la condición sea falsa.

Mediante la API, me gustaría listar todos los usuarios. Cada vez solo puedo tener un máximo de 100 elementos por página. Por lo tanto, necesito obtener la URL de la próxima página para volver a ejecutar la función – runPages para recopilar la lista. Entonces, la condición es cuando next_page == null, la función se detendrá.

En mi código, puedo obtener la URL de la próxima página. Sin embargo, no sigue ejecutando. ¿Alguien puede descubrir cuál es el problema?

const runPages = async (values) => {
if (values.next_page != null) {
for (const field of values.results) {
row.appendChild(addCell(field.name));
row.appendChild(addCell(field.email));
tblbody.appendChild(row);
}
values = await checkPages(values.next_page); // obtener nuevos valores.data mediante URL
runPages(values);
}
};
runPages(values);

const checkPages = async (value) => {
return new Promise((resolve, reject) => {
const getNewPageFromApi = async () => {
const GetUrl = ${value};
const Doorkey = { username: “XXX”, password: “*****” };
try {
const response = await Axios.get(GetUrl, { auth: Doorkey });
if (response.data.next_page != null) {
resolve(response.data);
}
} catch (err) {
reject(“no más datos”);
}
};
getNewPageFromApi();
});
};

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está en la función checkPages. Parece que no está devolviendo response.data desde la función checkPages. Debería devolver response.data desde la función checkPages para que la función runPages pueda usarla.

    Intente cambiar la función checkPages a esto:

    const checkPages = async (value) => {
      return new Promise((resolve, reject) => {
        const getNewPageFromApi = async () => {
          const GetUrl = `${value}`;
          const Doorkey = { username: "XXX", password: "*****" };
          try {
            const response = await Axios.get(GetUrl, { auth: Doorkey });
            if (response.data.next_page != null) {
              resolve(response.data);
            }
          } catch (err) {
            reject("no more data");
          }
        };
        return getNewPageFromApi();
      });
    };
    

Comments are closed.