NÃO! você não aprendeu errado que JavaScript é uma linguagem de thread único. É uma linguagem de thread único que tem acesso a um único thread principal para executar o código. Então, quando falamos sobre programação síncrona, estamos falando sobre esse thread solitário que faz todo o trabalho pesado e executa nosso código.
Mas, na realidade, o motor V8 e o Node.js usam uma biblioteca C chamada libuv para obter acesso a seis threads extras. Dois deles são usados para fazer a coleta de lixo e o restante é usado para realizar tarefas em segundo plano, como programação assíncrona.
Sim. Quando dizemos que o código é assíncrono ou sem bloqueio, o que realmente acontece é que o código assíncrono é passado para esses threads extras com o callback e o thread principal continua fazendo seu trabalho sem bloquear o resto do código.
Quando o código assíncrono é concluído, a função de retorno de chamada é enviada para a fila de eventos com erro ou com os dados necessários. Em seguida, o loop de eventos o empurra para a pilha de chamadas e, rapidamente, obtemos nosso resultado, para entender isso com algum código. Vejamos o método readfile do módulo fs.
fs.readFile("demo.text","utf8",(err,data)=>{ if(error){ return error } console.log("output",data); })
No código acima, o método readfile é passado para os threads de segundo plano. A leitura acontece em segundo plano e, quando termina, o retorno de chamada é enviado para a fila de eventos com erro ou dados.
Uma vez na pilha de chamadas, o retorno de chamada é executado e ficamos com o erro ou os dados como saída.
Obrigado pela leitura, espero ter conseguido explicar sobre os meios de thread único em Javascript.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3