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

765
Visualizações
¿De qué podría tratarse esto? [Error de TsLint: "Las promesas deben manejarse adecuadamente"]

Estoy haciendo algunas operaciones asincrónicas básicas usando async/await await en TypeScript, pero TSLint arroja mensajes de error misteriosos para estas dos funciones a continuación. ¿Alguien ha encontrado estos errores antes? En la salida de error, no se menciona la regla de gobierno, por lo que no entiendo qué los está causando. Cualquier idea sería muy apreciada.

La petición principal:

 import * as rp from 'request-promise' export function getRequest(address: rp.Options): rp.RequestPromise { return rp(address) }

Función asíncrona exportada:

 export async function getStatus(message: Message) { try { const res = await getRequest(address) if (res.ready) { message.reply('...') } else { message.reply('...') } } catch (err) { message.reply(err) } }

Esto obtiene: Las Promises must be handled appropriately y await of non-Promise sean Promesas para la línea n.º 3.

La función simple que usa esta exportación es:

 client.on('message', message => { if (message.content === 'green') { getStatus(message) } })

Esto también recibe Promises must be handled appropriately .

Información adicional:

Aunque el mensaje de error no lo menciona, esta parece ser la regla que rige para Promises must be handled appropriately : https://palantir.github.io/tslint/rules/no-floating-promises/

Y este problema menciona await of non-Promise : https://github.com/palantir/tslint/issues/2661

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Ese es un mensaje de error de mierda. Uno mejor podría ser,

cada expresión de tipo Promise debe terminar con una llamada a .catch o una llamada a .then con un controlador de rechazo ( fuente ).

Entonces, por ejemplo, si lo hace

 PromiseFunction() .catch(err => handle(err)) .then(() => console.log('this will succeed'))

entonces todavía tendrá un problema con tslint, porque el tipo de .then(...) es una promesa, y tiene que terminar con una trampa. La solución sería agregar una cláusula .catch , por ejemplo,

 PromiseFunction() .catch(err => handle(err)) .then(() => console.log('this will succeed')) .catch(() => 'obligatory catch')

o simplemente deshabilitando tslint para esa línea a través de:

 PromiseFunction() .catch(err => handle(err)) // tslint:disable-next-line:no-unsafe-any .then(() => console.log('this will succeed'))

Como alternativa, puede invertir el orden de las instrucciones .catch .then Sin embargo, eso impide que .then ejecute si se produce un error, lo que probablemente desee si se encuentra con este problema.

over 4 years ago · Santiago Trujillo Relatório

0

A veces, es posible que desee llamar a la promesa, pero no necesita hacer nada con la respuesta. Un cambio de ruta o algo más.

entonces en lugar de:

 promiseFunction().then().catch() try/catch async/await

tu puedes hacer:

 void promiseFunction();

Según los comentarios sobre el uso correcto de void , lea: IgnoreVoid

Úsalo a tu conveniencia :)

over 4 years ago · Santiago Trujillo Relatório

0

Obtuve la misma excepción cuando firebase-function firebase usando firebase-tool

 const ref = admin.database().ref("path/to/database/object"); ref.once("value").catch(error =>{ // line 22 response.send( error() ); }).then( snapshot =>{ response.send( snapshot.val ); })

Este código no se compila y return

 ERROR: /src/index.ts[22, 5]: Promises must be handled appropriately

He cambiado los lugares de catch y then .

 ref.once(...).then(...).catch(...)

Este código funciona, lo siento pero no tengo ninguna explicación.

Tan sorprendente cuando la aplicación devuelve algún error sin bloquear el bloqueo, incluso de acuerdo firebase doc que no menciona catch catch

over 4 years ago · Santiago Trujillo 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