O seguinte código JavaScript console.log("1"); setTimeout(() => { console.log("2"); }, 1); process.nextTick(() => { console.log("3"); }); quando executado no Node.js produz a saída:
Alternativas
A)
2 1 3
B)
3 1 2
C)
3 2 1
D)
1 2 3
E)
1 3 2
Gabarito e comentário
Resposta correta: E
A alternativa E está correta. A chamada síncrona console.log("1") é executada primeiro. Em seguida, o callback registrado por process.nextTick entra na fila própria do Node.js, processada antes da fila de temporizadores. Somente depois é executado o callback de setTimeout, ainda que o atraso informado seja de um milissegundo. A ordem observada é, portanto, 1, 3 e 2. Assim, a resposta é: 1 3 2
A alternativa E está correta. A chamada síncrona console.log("1") é executada primeiro. Em seguida, o callback registrado por process.nextTick entra na fila própria do Node.js, processada antes da fila de temporizadores. Somente depois é executado o callback de setTimeout, ainda que o atraso informado seja de um milissegundo. A ordem observada é, portanto, 1, 3 e 2. Assim, a resposta é: 1 3 2