[pt-BR] Convertendo 콜백은 자바스크립트를 약속합니다.
Primeiro de uma série de posts curtos com conhecimentos que podem ser úteis no dia a dia e quero compartilhar. Muitas vezes eles exigem um conhecimento prévio da ferramenta ou da linguagem.
Esses textos curtos serão publicados sob a tag .
Existem situações em que você precisa fazer com que um código que foi pensado para ser executado assincronamente seja executado de forma síncrona. Ao usar promise, você faz isso com o uso da palavra chave
await
:await algoAssincrono
.then(succeeded => console.log("Uhu!"))
.catch(failed => console.error("Deu ruim"));
A execução do código vai aguardar até que a promise seja finalizada para só então prosseguir.
Quando você está escrevendo um código que exige um comportamento síncrono, como uma AWS Lambda ou o o o equivalente de qualquer outro fornecedor de Cloud, você precisa garantir que todos os processos terminaram de ser executados antes do retorno da função:
exports.handler = async (event) => {
return await processoAssincrono(event)
.then(response => {
return {
statusCode: 200,
body: JSON.stringify(message: response)
};
})
.catch(failure => {
return {
statusCode: 400,
body: JSON.stringify(reason: failure)
}
})
}
기능
processoAssincrono
trata o evento recebido pela Lambda e, caso esteja tudo certo, retorna um status HTTP 200 e um conteúdo que será consumido pelo client, ou um status HTTP 400 caso não esteja tudo certo, com o motivo pelo qual a requisição falhou.예를 들면
processoAssincrono
이 모든 것이 가능합니다. Talvez ele Consulte um banco de dados, uma API, ou qualquer recurso que poderia causar o bloqueio do event loop, então essa decisão faz todo o sentido, mas dentro de uma Lambda nós precisamos que o processo seja finalizado para só então retornarmos um valor. Com o uso de await
, 약속 기간이 집행될 때까지 용기를 기탁할 수 있기 때문에 집행이 보장됩니다.콜백을 사용할 수 없는 경우 콜백을 사용할 수 없으며 가능성이 없습니다.
assincronoComCallbacks(
function(succeeded) {
console.log("Funcionou");
},
function(failed) {
console.error("Deu erro");
}
);
Para resolver isso, podemos criar uma promise que só segue em frente quando os callbacks forem executados:
await new Promise((fulfill, reject) => {
assincronoComCallbacks(
succeeded => fulfill(succeeded),
failed => reject(failed)
});
})
.then(succeeded => console.log("Uhu!"))
.catch(failed => console.error("Deu ruim"));
재미있는 기능 콜백은 계속해서 전송을 승인하고, mas estará encapsulada numa 약속, 승인 또는 사용 허용
await
, tornando 또는 processo seja executado como se fosse síncrono.
Reference
이 문제에 관하여([pt-BR] Convertendo 콜백은 자바스크립트를 약속합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/pbalduino/convertendo-callbacks-em-promises-em-javascript-1egi텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)