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

84
Visualizações
no capturado en la promesa función asincrónica anidada manejo de errores de promesa

Estoy tratando de implementar promesas y async/await en mi proyecto. Necesito usar fetch para publicar algunos datos en el servidor y luego hacer otros procesos usando javascript. pero estoy confundido sobre cómo debo manejar el error para las promesas async/await anidadas.

el problema es que hay un error "No detectado (prometido) ¡parar!" y la cadena "parar!!" no se agrega en el div

esto es lo que probé:

 function tunggu(waktu) { return new Promise((resolve) => { const action = setTimeout(() => { const str = `${waktu.toString()} milisecond has passed<br/>`; resolve(str); }, waktu); }) } const div = document.querySelector('#asd'); fetch('https://jsonplaceholder.typicode.com/todos/1') .then(response => response.json()) .then(json => { console.log(json); (async () => { div.innerHTML = 'start<br/>'; const a = await tunggu(2000); div.innerHTML += a; throw('stop!!'); // it looks like this line is causing the error const b = await tunggu(3000); div.innerHTML += b; })(); }) .catch(error => { console.log('error occurred', error) div.innerHTML += error })
 <div id="asd"></div>

Esto (también en jsfiddle ) es solo una versión simplificada de mi código, en mi proyecto, la búsqueda usa el método POST, y los procesos js en realidad tienen muchos más procesos, así que lo throw porque el error puede ocurrir en cualquier lugar .

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

hubo un error "No detectado (en promesa) ¡parar!" y la cadena "parar!!" no se agrega al div

Rompió la cadena de promesas al introducir una función asíncrona independiente en el controlador .then() (que lanza, pero no tiene .catch() propio, lo que en última instancia provoca el error que ve).

En su lugar, haga que todo el controlador .then() asíncrono:

 function tunggu(waktu) { return new Promise((resolve) => { setTimeout((() => resolve(`${waktu.toString()} milisecond has passed`)), waktu); }) } const div = document.querySelector('#asd'); fetch('https://jsonplaceholder.typicode.com/todos/1') .then(response => response.json()) .then(async (json) => { console.log(json); div.innerHTML = 'start<br/>'; const a = await tunggu(2000); div.innerHTML += a + '<br/>'; throw('stop!!'); const b = await tunggu(3000); div.innerHTML += b; }) .catch(error => { console.log('error occurred', error) div.innerHTML += error })
 <div id="asd"></div>

Alternativamente, devuelva la promesa de su IIFE asíncrono, para mantener intacta la cadena de promesa:

 function tunggu(waktu) { return new Promise((resolve) => { setTimeout((() => resolve(`${waktu.toString()} milisecond has passed`)), waktu); }) } const div = document.querySelector('#asd'); fetch('https://jsonplaceholder.typicode.com/todos/1') .then(response => response.json()) .then(json => { console.log(json); return (async () => { div.innerHTML = 'start<br/>'; const a = await tunggu(2000); div.innerHTML += a + '<br/>'; throw('stop!!'); const b = await tunggu(3000); div.innerHTML += b; })(); }) .catch(error => { console.log('error occurred', error) div.innerHTML += error })
 <div id="asd"></div>

about 4 years ago · Juan Pablo Isaza 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