Zrozumienie kodu asynchronicznego w terminach laika

Rozumiem podstawową kwestię asynchroniczności: rzeczy nie działają sekwencyjnie. I rozumiem, że istnieje coś bardzo potężnego ... rzekomo. Ale przez całe życie nie mogę owinąć głowy wokół kodu. Spójrzmy na kod async Node.JS, który PISEMIŚMY ... ale naprawdę nie rozumiem.

function newuser(response, postData) {
    console.log("Request handler 'newuser' was called.");
    var body = '<html>' + 
        '<head>' +
        '<meta http-equiv="Content-Type" content="text/html; ' +
        'charset=UTF-8" />' +
        '</head>' +
        '<body>' +
        '<form action=" /thanks" method="post">' +
        '<h1> First Name </h1>' +
        '<textarea name="text" rows="1" cols="20"></textarea>' +
        '<h1> Last Name </h1>' +
        '<textarea name="text" rows="1" cols="20"></textarea>' +
        '<h1> Email </h1>' +
        '<textarea name="text" rows="1" cols="20"></textarea>' +
        '<input type="submit" value="Submit text" />' +
        '</body>' +
        '</html>';
    response.writeHead(200, { "Content-Type": "text/html" });
    response.write(body);
    response.end();
}

Skąd ponownie wzięła się odpowiedź? wysłać dane? Dlaczego nie mogę zdefiniować zmiennej w tym „wywołaniu zwrotnym”, a następnie użyć jej poza wywołaniem zwrotnym? Czy jest jakiś sposób, aby kilka rzeczy było sekwencyjnych, a reszta asynchronicznego programu?

questionAnswers(3)

yourAnswerToTheQuestion