Manipulação de Operações Assíncronas com Promises
O que é uma Promise?
Uma Promise é um espaço reservado para um valor futuro, que pode ser:
Uma promise começa como pending
e é finalizada permanentemente como fulfilled
com um valor ou rejected
com um motivo.
Compreendendo os métodos resolve, reject e then()
Criando uma Promise
Para criar uma Promise, é necessário passar uma função com dois parâmetros: resolve
e reject
. Esses parâmetros são funções utilizadas para indicar se a operação assíncrona foi concluída com sucesso ou falhou.
const myPromise = new Promise((resolve, reject) => {
const success = true; // Simulate whether the task is successful
if (success) {
resolve('Task completed successfully!');
} else {
reject('Task failed.');
}
});
resolve(value)
: Marca a Promise como concluída (bem-sucedida) e passa o resultado (value);reject(error)
: Marca a Promise como rejeitada (falha) e passa o erro.
Utilizando then() para tratar Promises resolvidas:
Após criar uma Promise, é possível tratar o resultado utilizando o método then()
. Este método é chamado quando a Promise é concluída (resolvida).
myPromise.then(result => {
console.log(result); // Output: Task completed successfully!
});
Neste exemplo, o método then()
recebe o valor passado para resolve()
e executa o callback com o resultado. Ele é executado apenas se a Promise for resolvida com sucesso.
Tratamento de Erros com .catch()
Promises oferecem uma maneira simples de tratar erros por meio do método .catch()
. Se uma Promise for rejeitada (falhar), o erro é capturado e tratado dentro de .catch()
.
1234567891011121314151617const myPromise = new Promise((resolve, reject) => { const success = false; // Simulate a failure if (success) { resolve('Task completed successfully!'); } else { reject('Task failed.'); } }); myPromise .then(result => { console.log(result); }) .catch(error => { console.error('Error:', error); // Output: Error: Task failed. });
O método catch()
é utilizado para tratar erros quando a Promise é rejeitada. Ele captura o erro passado pelo reject()
e permite gerenciar cenários de falha.
Encadeamento de Promises para Operações Assíncronas Sequenciais
Um dos principais benefícios das Promises é a capacidade de encadeá-las, permitindo lidar com várias operações assíncronas em sequência sem cair no callback hell. Cada then()
retorna uma nova Promise, possibilitando o encadeamento de múltiplas chamadas then()
em sequência, com os resultados exibidos no HTML à medida que cada Promise é resolvida.
index.html
index.js
index.css
Operações Sequenciais: Cada then()
retorna uma nova Promise, passando o resultado de uma operação para a próxima. Isso permite uma sequência linear e organizada de operações assíncronas que atualizam o texto exibido em HTML.
Tratamento de Erros: O método .catch()
trata qualquer erro que ocorra durante qualquer uma das resoluções da Promise. Isso garante que os erros sejam capturados e exibidos na página, independentemente de onde ocorram na cadeia.
Por que usar Promises?
- Evitar Callback Hell: Promises oferecem uma forma mais limpa e legível de lidar com operações assíncronas do que callbacks profundamente aninhados;
- Tratamento de Erros: Promises fornecem tratamento de erros integrado com
.catch()
, facilitando o gerenciamento de operações rejeitadas; - Encadeamento Sequencial: Promises permitem executar várias operações assíncronas em sequência usando encadeamento, tornando o código mais fácil de acompanhar e manter.
1. O que é uma Promise?
2. No código a seguir, o que .catch()
fará se houver um erro em um dos callbacks .then()
?
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
What are some real-world examples of using Promises in JavaScript?
Can you explain the difference between callbacks and Promises?
How do you chain multiple Promises together?
Awesome!
Completion rate improved to 2.22
Manipulação de Operações Assíncronas com Promises
Deslize para mostrar o menu
O que é uma Promise?
Uma Promise é um espaço reservado para um valor futuro, que pode ser:
Uma promise começa como pending
e é finalizada permanentemente como fulfilled
com um valor ou rejected
com um motivo.
Compreendendo os métodos resolve, reject e then()
Criando uma Promise
Para criar uma Promise, é necessário passar uma função com dois parâmetros: resolve
e reject
. Esses parâmetros são funções utilizadas para indicar se a operação assíncrona foi concluída com sucesso ou falhou.
const myPromise = new Promise((resolve, reject) => {
const success = true; // Simulate whether the task is successful
if (success) {
resolve('Task completed successfully!');
} else {
reject('Task failed.');
}
});
resolve(value)
: Marca a Promise como concluída (bem-sucedida) e passa o resultado (value);reject(error)
: Marca a Promise como rejeitada (falha) e passa o erro.
Utilizando then() para tratar Promises resolvidas:
Após criar uma Promise, é possível tratar o resultado utilizando o método then()
. Este método é chamado quando a Promise é concluída (resolvida).
myPromise.then(result => {
console.log(result); // Output: Task completed successfully!
});
Neste exemplo, o método then()
recebe o valor passado para resolve()
e executa o callback com o resultado. Ele é executado apenas se a Promise for resolvida com sucesso.
Tratamento de Erros com .catch()
Promises oferecem uma maneira simples de tratar erros por meio do método .catch()
. Se uma Promise for rejeitada (falhar), o erro é capturado e tratado dentro de .catch()
.
1234567891011121314151617const myPromise = new Promise((resolve, reject) => { const success = false; // Simulate a failure if (success) { resolve('Task completed successfully!'); } else { reject('Task failed.'); } }); myPromise .then(result => { console.log(result); }) .catch(error => { console.error('Error:', error); // Output: Error: Task failed. });
O método catch()
é utilizado para tratar erros quando a Promise é rejeitada. Ele captura o erro passado pelo reject()
e permite gerenciar cenários de falha.
Encadeamento de Promises para Operações Assíncronas Sequenciais
Um dos principais benefícios das Promises é a capacidade de encadeá-las, permitindo lidar com várias operações assíncronas em sequência sem cair no callback hell. Cada then()
retorna uma nova Promise, possibilitando o encadeamento de múltiplas chamadas then()
em sequência, com os resultados exibidos no HTML à medida que cada Promise é resolvida.
index.html
index.js
index.css
Operações Sequenciais: Cada then()
retorna uma nova Promise, passando o resultado de uma operação para a próxima. Isso permite uma sequência linear e organizada de operações assíncronas que atualizam o texto exibido em HTML.
Tratamento de Erros: O método .catch()
trata qualquer erro que ocorra durante qualquer uma das resoluções da Promise. Isso garante que os erros sejam capturados e exibidos na página, independentemente de onde ocorram na cadeia.
Por que usar Promises?
- Evitar Callback Hell: Promises oferecem uma forma mais limpa e legível de lidar com operações assíncronas do que callbacks profundamente aninhados;
- Tratamento de Erros: Promises fornecem tratamento de erros integrado com
.catch()
, facilitando o gerenciamento de operações rejeitadas; - Encadeamento Sequencial: Promises permitem executar várias operações assíncronas em sequência usando encadeamento, tornando o código mais fácil de acompanhar e manter.
1. O que é uma Promise?
2. No código a seguir, o que .catch()
fará se houver um erro em um dos callbacks .then()
?
Obrigado pelo seu feedback!