Tôi đã đọc this và this, xem this ...Node.js vòng lặp sự kiện hiểu biết (với một sơ đồ)
Tôi đã thực hiện một sơ đồ như thế nào tôi hiểu nó:
- callbacks Javascript (chức năng) có thể có mặt trong
current queue
,check queue
,close callbacks queue
,timers queue
vàI/O callbacks queue
. - Mã Js chỉ được thực hiện từ
current queue
một chức năng (nhiệm vụ/công việc) tại một thời điểm. - Mã Js được thực thi tại thời điểm này có thể thêm microtask (công việc) vào
current queue
để được thực thi sau chính nó và macrotask (tác vụ) đếncheck queue
. Nó có thể thêm nhiệm vụ vào các hàng đợi khác chỉ bằng cách yêu cầu API thực hiện nhiệm vụ đó. Idle, prepare
giai đoạn được sử dụng cho một số nút js kinh doanh nội bộ (có thể giống như thu gom rác).Poll
thăm dò ý kiến giai đoạn chủ đề từ nhóm chủ đề và điền vào hàng đợi với các cuộc gọi lại thích hợp.Idle, prepare
vàpoll
các giai đoạn không có hàng đợi cho các cuộc gọi lại js được liên kết với chúng.- (bốn) Chủ đề trong các
thread pool
đều giống nhau và không có chuyên môn. - Vòng lặp sự kiện sẽ thực hiện và thực hiện từng công việc từ mỗi hàng đợi cho đến khi hàng đó trống, sau đó chuyển sang hàng đợi tiếp theo.
- Nhiệm vụ trong hàng đợi không có bất kỳ công việc nào (dịch vụ nhỏ) được liên kết với chúng. Công việc chỉ được tạo trong khi thực hiện tác vụ hoặc công việc khác và chỉ xuất hiện trong số
current task queue
.
Điều đó có đúng hay tôi thiếu gì đó?
Tệp .pptx MS Power Point có biểu đồ có thể được tìm thấy here.
Điều này có vẻ quá phức tạp với tôi. Có lẽ nó là, nhưng không phải là một mô hình đơn giản, đủ khi bạn viết mã? Tôi nghĩ rằng nó không phải là cần thiết để biết tất cả các chi tiết đang diễn ra dưới mui xe. Không phải là nó đủ để biết rằng có một hàng đợi cho các đánh dấu hiện tại, một hàng đợi cho đánh dấu tiếp theo và callbacks đang chờ hẹn giờ hoặc I/O. –
Tôi không thể trả lời câu hỏi này, nhưng tôi thực sự đánh giá cao nỗ lực bạn đưa vào câu hỏi của mình. – georg
@LorenzMeyer Một mô hình đơn giản là đủ để viết mã, nhưng tôi vẫn muốn biết những gì dưới mui xe. Georg, cảm ơn :) – grabantot