Tôi đang viết một chương trình dòng lệnh đơn luồng hoàn toàn đồng bộ trong node.js, cần phải viết một tệp nhị phân duy nhất, mà tôi đang sử dụng WriteStream
. mô hình sử dụng của tôi là dọc theo dòng:Node.js WriteStream đồng bộ
var stream = fs.createWriteStream(file)
stream.write(buf1)
stream.write(buf2)
Điều này dường như làm việc, nhưng các tài liệu nói nó không đồng bộ và tôi muốn chắc chắn rằng tôi không viết code mà làm việc 99% thời gian. Tôi không quan tâm chính xác khi dữ liệu được viết miễn là nó được viết theo thứ tự được chỉ định và không muộn hơn khi chương trình thoát, và số lượng dữ liệu nhỏ nên tốc độ và mức tiêu thụ bộ nhớ không phải là vấn đề.
Tôi đã xem đề cập đến stream.end()
nhưng có vẻ như không hoạt động và tôi cũng thấy các đề xuất gọi đó có thể là một ý tưởng tồi nếu bạn không sử dụng gọi lại bởi vì nó có thể sẽ được gọi trước khi tất cả dữ liệu được viết.
Cách tiếp cận của tôi có đúng không (với điều kiện tôi muốn hoàn toàn đồng bộ) hoặc có bất kỳ điều gì tôi cần xem không?
Tôi không hoàn toàn chắc chắn nếu điều này phù hợp với trường hợp sử dụng của bạn (và nhận ra rằng nó có thể không hoàn toàn tìm kiếm) nhưng bạn có xem xét chỉ sử dụng 'fs.write' làm tùy chọn đồng bộ không? http://nodejs.org/api/fs.html#fs_fs_write_fd_buffer_offset_length_position_callback – imjared
@imjared Câu hỏi hay! phiên bản đồng bộ của điều đó dường như thực hiện công việc. Sự khác nhau giữa hai cái là gì? hoặc đặt một cách khác, với sự tồn tại của điều đó, lý do cho sự tồn tại của WriteStream là gì? WriteStream có chủ yếu dành cho việc viết văn bản không? – rwallace
là hoàn toàn trung thực Tôi không có sự hiểu biết tốt nhất của suối nhưng bất cứ khi nào tôi đã cần một cách tiếp cận đồng bộ để viết một cái gì đó. Đây là một lời giải thích tốt hơn nhiều so với tôi có thể cung cấp cho: http://stackoverflow.com/a/8770026/628699 – imjared