Tôi hiểu điều cơ bản về không đồng bộ-Ness: mọi thứ không thực thi tuần tự. Và tôi hiểu có điều gì đó rất mạnh mẽ về điều đó ... bị cáo buộc. Nhưng đối với cuộc sống của tôi, tôi không thể quấn đầu quanh mã. Chúng ta hãy nhìn vào mã async Node.JS mà tôi CÓ VĂN BẢN ... nhưng không thực sự có được.Hiểu mã không đồng bộ trong các điều khoản của Layman
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();
}
Phản hồi đến từ đâu? postData? Tại sao tôi không thể xác định một biến trong "gọi lại" này và sau đó sử dụng nó bên ngoài của cuộc gọi lại? Có cách nào để có một vài thứ được tuần tự sau đó phần còn lại của chương trình không đồng bộ?
Từ điểm kỹ thuật bạn nói đúng, nhưng những gì bạn bỏ lỡ là "tại sao bạn muốn thực hiện cuộc gọi lại ngay từ đầu". Đó là những gì làm cho async trở nên rất quan trọng. – jcolebrand
Tôi sẽ không nói rằng tôi sẽ không đọc nó một hay hai lần nữa - nhưng đó có lẽ là giải thích tốt nhất mà người ta có thể đưa ra mà không cần phải ở đây về thể chất, heh. – PinkElephantsOnParade
Tôi nghĩ rằng đây là một lời giải thích tuyệt vời cho sự hiểu biết cách hoạt động của callbacks - cảm ơn vì nó! – wmock