Luồng là một cấu trúc cho phép người dùng đọc/ghi dữ liệu tuần tự từ/đến nó. Luồng chủ yếu được sử dụng khi làm việc với lượng dữ liệu lớn. Khi bạn muốn di chuyển khối dữ liệu lớn từ nơi này sang nơi khác [ví dụ: từ tệp này sang tệp mới], tốt hơn là sử dụng tính năng phát trực tuyến, vì vậy bạn không cần phải giữ toàn bộ dữ liệu trong bộ nhớ [thậm chí có thể là không thể nếu dữ liệu . Đọc thêm
Chúng tôi đang tạo một luồng Writable
[luồng chỉ cho phép ghi dữ liệu] và ngay sau đó hủy nó. Hàm destroy[]
nhận lỗi tham số được đưa ra khi luồng được sử dụng sau khi hủy. Sau đó, chúng tôi cố gắng sử dụng một luồng và dự kiến sẽ gặp lỗi trong khối catch
Như bạn có thể đoán nó không bị bắt
Điều gì đang xảy ra?
Câu trả lời cho câu hỏi này là luồng đó là một lớp con của đối tượng EventEmitter
đang sử dụng hàm gọi lại không đồng bộ
Hừm, nhưng nó có nghĩa là gì?
trình phát sự kiện
Bộ phát sự kiện là một đối tượng được cung cấp bởi Node. js để hoạt động với hệ thống sự kiện [nó là một phần của gói sự kiện tích hợp]. Nó cho phép chúng tôi gửi các sự kiện và xử lý chúng với người nghe. Mã nói nhiều hơn hàng ngàn từ, vì vậy đây là ví dụ về cách sử dụng trình phát sự kiện cơ bản
Chúng tôi đang tạo một phiên bản EventEmitter
mới và đính kèm một trình xử lý sự kiện vào sự kiện 'myEvent'
. Bây giờ mỗi khi 'myEvent'
được phát ra, hàm eventHandler[]
sẽ được gọi. Sau đó, chúng tôi phát ra sự kiện này và mong đợi trình xử lý được kích hoạt
Và đầu ra như mong đợi
Điều gì sẽ xảy ra nếu chúng ta đưa ra lỗi bên trong trình xử lý? . Hãy xem nào
Điều này thực sự nên nói “Bắt lỗi. ”
Thật tuyệt vời. Nó bị bắt. một thí nghiệm khác. Hãy chuyển đổi trình phát sự kiện thành trình phát sự kiện không đồng bộ. Để làm điều đó, chỉ cần gửi một hàm không đồng bộ dưới dạng gọi lại
Và sau khi chạy tập lệnh, chúng ta có thể thấy lỗi đó không bị bắt
Nếu bạn nghĩ về nó, đó là một hành vi hợp lý. Chúng tôi đang gửi một trình xử lý không đồng bộ và không có nơi nào chúng tôi chờ đợi nó [cũng như việc sử dụng nó]. Cuộc gọi lại trình phát sự kiện được gọi độc lập với lần thử bắt, vì vậy nó không bao giờ bị bắt
Làm thế nào để chúng tôi làm cho nó không bị sập ứng dụng?
Xử lý lỗi bộ phát sự kiện
Các đối tượng trình phát sự kiện cung cấp cho chúng tôi một sự kiện đặc biệt để xử lý lỗi. Mỗi khi xảy ra lỗi bên trong phiên bản trình phát sự kiện, một sự kiện 'error'
đặc biệt được phát ra. Nhưng chúng ta cần ngầm yêu cầu bộ phát sự kiện hành động theo cách đó bằng cách gửi destroy[]
0 bên trong một hàm tạo
Tất cả những gì chúng ta cần làm bây giờ là đính kèm một cuộc gọi lại vào sự kiện 'error'
Hiện không có ứng dụng nào gặp sự cố
Sửa ví dụ về luồngNhớ ví dụ đầu tiên? . Đối với các luồng, chúng tôi không cần đặt destroy[]
2. Nó được đặt theo mặc định
Tất cả những gì cần thiết là gọi lại sự kiện 'error'
Ít thay đổi mã có thể ngăn chặn sự cố mã sản xuất của bạn trong những thời điểm không thể đoán trước
Làm thế nào để tránh những lỗi chưa được xử lý?Khá đơn giản, bạn chỉ cần thiết lập callback cho sự kiện 'error'
. Câu hỏi thực sự là, làm thế nào bạn biết nếu bạn đang làm việc với lớp con trình phát sự kiện?
Có một vài ví dụ tích hợp, nổi tiếng về trình phát sự kiện
- Luồng [
destroy[]
5] — đã nói về chúng - Net [
destroy[]
6] - được sử dụng để kết nối mạng destroy[]
7 từ góidestroy[]
8 [destroy[]
9] — được sử dụng để tạo luồng từ tệp [nó thuộc danh mục luồng, nhưng nó phổ biến đến mức tôi quyết định ghi chú ở đây]
Về cơ bản, tất cả các đối tượng phát ra sự kiện là thể hiện của trình phát sự kiện
Để chắc chắn, bạn có thể xem xét triển khai và kiểm tra xem nó có mở rộng EventEmitter hay có EventEmitter trong chuỗi nguyên mẫu không. Kiểm tra tài liệu cũng sẽ hữu ích
ghi chú cuối cùngChúng tôi bắt đầu với một ví dụ đơn giản nhưng thực tế. Một số nhà phát triển đã sử dụng luồng bên trong try-catch và chắc chắn rằng ứng dụng sẽ không bao giờ gặp sự cố. Một vài lần một tuần, ứng dụng bị sập mà không có lý do. Anh ấy đã làm việc chăm chỉ để tìm ra một vấn đề nhưng không biết
“Nơi xảy ra sự cố là bên trong try-catch. Nó nên bị bắt. Những lỗi đó trượt ở đâu?
Cho đến khi anh ấy nhận ra về các trình phát sự kiện và mọi thứ trở nên rõ ràng ngay lập tức
Hy vọng bạn sẽ không làm sai lầm đó
Trình phát sự kiện là một chủ đề rất thú vị. Để đọc thêm, hãy kiểm tra xem nó ra
Xây dựng các ứng dụng web có thể kết hợpĐừng xây dựng web nguyên khối. Sử dụng Bit để tạo và soạn các thành phần phần mềm tách rời — trong các khung yêu thích của bạn như React hoặc Node. Xây dựng các ứng dụng mô-đun và có thể mở rộng với trải nghiệm nhà phát triển mạnh mẽ và thú vị
Đưa nhóm của bạn đến Bit Cloud để lưu trữ và cộng tác trên các thành phần cùng nhau, đồng thời tăng tốc, mở rộng quy mô và chuẩn hóa quá trình phát triển theo nhóm. Hãy thử giao diện người dùng có thể kết hợp với Hệ thống thiết kế hoặc Giao diện vi mô hoặc khám phá phần phụ trợ có thể kết hợp với các thành phần phía máy chủ