Node.js hiện có các trình tạo.Cố gắng hiểu máy phát/năng suất trong node.js - điều gì thực thi chức năng không đồng bộ?
Sự hiểu biết của tôi là máy phát có thể được sử dụng để viết mã có vẻ tuyến tính hơn và tránh địa ngục gọi lại và kim tự tháp mã hóa kiểu doom.
Vì vậy, đến thời điểm này, sự hiểu biết của tôi là bên trong một máy phát điện, mã thực hiện cho đến khi nó đạt đến một tuyên bố "lợi nhuận". Việc thực thi chức năng của máy phát điện bị treo tại thời điểm này. Câu lệnh yield
chỉ định giá trị trả về có thể là một hàm. Thông thường, điều này sẽ là một chức năng I/O chặn - một trong những thường sẽ cần phải được thực hiện không đồng bộ.
Chức năng trả về của sản phẩm được trả về bất kỳ thứ gì gọi là trình tạo.
Câu hỏi của tôi là, điều gì sẽ xảy ra vào thời điểm này? Chính xác những gì thực thi chức năng I/O chặn mà lợi nhuận trả về?
Để viết mã máy phát/mã sản xuất có vẻ là tuyến tính, cần phải có một loại hàm cụ thể gọi là trình tạo, một hàm lặp qua trình tạo và thực thi từng hàm asynch được trả về bởi năng suất và trả về kết quả của chức năng asynch trở lại vào máy phát điện?
Tôi vẫn chưa rõ chính xác cách hàm asynch được trả về bởi lợi nhuận được thực thi. Nếu nó được thực thi bởi hàm gọi trình tạo, nó có được thực hiện không đồng bộ không? Tôi đoán như vậy bởi vì để làm khác sẽ dẫn đến hành vi chặn.
Để tóm tắt câu hỏi của tôi:
- Để viết "tuyến tính" mã asynch với máy phát điện, là nó cần thiết để có được một chức năng gọi điện thoại mà lặp trên các máy phát điện, thực hiện chức năng mang lại như callbacks và gửi lại kết quả của cuộc gọi lại vào máy phát điện?
- Nếu câu trả lời cho câu hỏi 1 là có, chính xác các hàm được thực hiện được thực hiện như thế nào - không đồng bộ?
Có ai có thể cung cấp tổng quan/tóm tắt tốt hơn về toàn bộ quá trình hoạt động không?
Điều này có thể giúp phần nào, cũng liên kết đến mã trong bài đăng: http: //bjouhier.wordpress.com/2013/06/01/bring-asyncawait-to-life-in-javascript/ –
Bạn có thể muốn xem https://github.com/loveencounterflow/coffy-script có phần giới thiệu từng bước dài lập trình không đồng bộ với máy phát. – flow