Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

181
Views
async/await y promesa en TypeScript

Estoy tratando de entender por qué la string de tipo de retorno en el siguiente método está subrayada en rojo como error:

 exportPageAsText(pageNumber: number): string { (async () => { const text = await this.pdfViewerService.getPageAsText(pageNumber); console.log(text); return text; })(); }

El mensaje de error dice: A function whose declared type is neither 'void' nor 'any' must return a value. así que moví el return text; fuera del alcance async y lo colocó después de })(); pero eso hizo que la variable de text fuera irreconocible.

Luego pensé que tal vez se debía a que el tipo de devolución del método debería ser una Promise , así que cambié la firma a:

 exportPageAsText(pageNumber: number): Promise<string>

Pero recibo un nuevo error que dice que A function whose declared type is neither 'void' nor 'any' must return a value.

¿Puede alguien por favor ayudarme a entender lo que estoy haciendo mal?

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Desea usar await , por lo que necesita una función asíncrona. Lo que creó es una función asíncrona de autoinvocación. Pero devolver un valor dentro de la función de autoinvocación no lo devuelve para la función base.

Lo que está buscando es hacer que la función base sea asíncrona y establecer el tipo de retorno en Promise<string> :

 async exportPageAsText(pageNumber: number): Promise<string> { const text = await this.pdfViewerService.getPageAsText(pageNumber); console.log(text); return text; }
about 4 years ago · Juan Pablo Isaza Report

0

Su método espera un retorno antes del final, pero el evento de la promesa declarada por async () => {... no se devuelve

así que dos cosas para cambiar en tu código

  1. devolver el asíncrono ()
  2. cambie el tipo de retorno en la declaración de método por Promise<string>

En su caso, la sintaxis se verá como

 exportPageAsText(pageNumber: number): Promise<string> { return (async () => { const text = await this.pdfViewerService.getPageAsText(pageNumber); console.log(text); return text; })(); }
about 4 years ago · Juan Pablo Isaza Report

0

Así es como lo hubiera hecho. asíncrono/espera.

 const exportPageAsText = async (pageNumber: number): Promise<string> => { const text: string = await this.pdfViewerService.getPageAsText(pageNumber); console.log(text); return text; }
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!