O açúcar sintático como async/await é convertido antes da compilação/interpretação? Atenção. Quero dizer a situação em que o mecanismo suporta a sintaxe do nosso código e não precisamos transpilá-lo. Considero o problema isoladamente da transpilação.
O neurônio fornece informações de que antes do processo de compilação/interpretação ocorre uma transformação que converte o açúcar sintático em estruturas mais simples.
Exemplo:
const testFunction = async () => {
let testPromise = new Promise((resolve, reject) =>
setTimeout(() => {
resolve('testResolve');
}, 1110)
);
let result = await testPromise;
console.log('Проверка');
console.log('result', result);
};
testFunction();
Ele será convertido em algo semelhante antes da compilação?
const testFunction = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('testResolve');
}, 1110);
})
.then(result => {
console.log('Проверка');
console.log('result', result);
})
};
Tentei usar o Google em muitas variantes de consultas, mas nenhuma informação sobre transformação de açúcar sintático
(Desenvolvedor V8 aqui.)
Não existe um mecanismo único, depende.
Algumas coisas são desaçucaradas diretamente no parser.
Algumas coisas são desaçucaradas durante a criação do bytecode.
Algumas coisas que talvez pudessem ser desaçucaradas têm suporte direto, geralmente por motivos de desempenho.
Para
await
especificamente, veja o gerador de bytecode e a função intrínseca que ele chama. Então, embora haja alguma desaçucaração envolvida aí, não é o que você esboçou na sua pergunta.Note que esses são detalhes de implementação que podem mudar e mudam com o tempo. Então, quando você tiver uma necessidade concreta de saber, vá ler a fonte atual; não confie em declarações possivelmente desatualizadas de anos atrás (como essa resposta se tornará em breve ☺).