Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

153
Visualizações
cómo asegurarse de que la devolución de llamada de una llamada de función se ejecute solo después de la devolución de llamada de la segunda llamada de función

Estoy tratando de analizar un pdf que contiene datos en forma de tabla usando javascript. Mi archivo pdf es un horario universitario en forma de cuadrícula que tiene datos en cada cuadrícula. Estoy haciendo uso del paquete pdfreader npm (soy bastante nuevo en javascript, así que no estoy seguro de si existe un paquete mejor para el caso de uso)

Mi plan es primero analizar a través del pdf y con la ayuda de algunas palabras que sé que están presentes en la tabla de tiempo (por ejemplo, el nombre de los días) y obtener las coordenadas x e y aproximadas de la cuadrícula en el pdf. En segundo lugar, analice el pdf una vez más y ahora, a partir del texto, obtengo una matriz 2d con la ayuda de las coordenadas que obtuve en el primer paso.

En el ejemplo del analizador de pdf hay una función, parseFileItems, que llama a itemHandler(error, item) en cada elemento analizado del archivo pdf. Entonces, para el primer paso, llamo a la función como

 new PdfReader().parseFileItems("./timetable.pdf", (err, item) => { if (err) console.error("error:", err); else if (!item) console.warn("end of file"); else if (item.text) { cordinatesofGrid=//my logic to fetch the cordinates of the grid } });

Ahora lo que tengo que hacer es analizar el pdf una vez más y hacer uso de la variable "cordinatesofGrid" que obtuve en la primera pasada. así que nuevamente tengo la intención de llamar a parseFileItems por segunda vez. Pero esto debería suceder solo una vez que el primer paso y su código de devolución de llamada hayan terminado de ejecutarse.

Intenté llamar a los primeros parseFileItems con await y luego llamar a la función de análisis por segunda vez, pero esto no funciona como se esperaba. (Supongo que esto se debe a que la espera no se aplica a la devolución de llamada)

 await new PdfReader().parseFileItems("./timetable.pdf", (err, item) => { //first call }); new PdfReader().parseFileItems("./timetable.pdf", (err, item) => { //second call });

¿Alguien podría sugerir cómo asegurarse de que la devolución de llamada de una llamada de función se ejecute solo después de la devolución de llamada de la segunda llamada de función?

about 4 years ago · Santiago Gelvez
3 Respostas
Responde à pergunta

0

Podría crear un contenedor Promise alrededor del nuevo PdfReader()

Para tu información, ¡no sé si la biblioteca de pdf está basada en promesas! esto es de la información que proporcionó!

 //This code will always resolve and never throw a reject const PdfReaderAsync = () => { return new Promise((res, rej) => { new PdfReader().parseFileItems("./timetable.pdf", (err, item) => { if (err || !item) rej(err) res(item) }) }) } //Make the function you are calling this code async //So you can use it like this try { let item = await PdfReaderAsync() // Run through your code } catch (err) { //handleError } // Code 2 try { let item = await PdfReaderAsync() // Run through your code } catch (err) { //handleError }
about 4 years ago · Santiago Gelvez Relatório

0

Podría intentar usar la función .then() para el manejo de promesas.

Aquí hay un ENLACE a alguna documentación sobre cómo funciona/cómo usarlo. Creo que esto solo funcionaría si sus funciones usan promesas (que asumí ya que intentó esperar).

about 4 years ago · Santiago Gelvez Relatório

0

Puede poner el segundo en la primera devolución de llamada y usar await

 await new PdfReader().parseFileItems("./timetable.pdf", async(err, item) => { await new PdfReader().parseFileItems("./timetable.pdf", (err, item) => { //second call }); //first call });
about 4 years ago · Santiago Gelvez Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda