Что такое неблокирующий или асинхронный ввод-вывод в Node.js?

В контексте движков Javascript на стороне сервера, что такое неблокирующий ввод-вывод или асинхронный ввод-вывод? Я вижу, что это упоминается как преимущество над реализациями на стороне сервера Java.

Ответ 1

Синхронный и асинхронный

Синхронное выполнение обычно ссылается на выполнение кода в последовательности. Асинхронное выполнение относится к выполнению, которое не выполняется в последовательности, появляющейся в коде. В следующем примере синхронная операция приводит к тому, что предупреждения срабатывают последовательно. В асинхронной операции, когда alert(2), как представляется, выполняет второе, это не так.

Синхронный: 1,2,3

alert(1);
alert(2);
alert(3);

Ответ 2

var startTime = new Date().getTime();
var getEndTime = () => {
    var tempEndTime = new Date().getTime();
    var second = (tempEndTime - startTime)/1000
    return `took ${second} sec...to finish\n`
}

console.log('1: start App', getEndTime())
setTimeout(()=>{
    console.log('2: setTimeout', getEndTime())
}, 1000)
console.log('3: End App', getEndTime())

// console -> Process Order:  1 -> 3 -> 2

Пример кода