2013-07-10 70 views
10

Tôi có một số mã runing trong một quá trình con trong một chương trình nút như vậy:Khối try-catch-finally có đồng bộ trong node.js không?

try{ 
    var data = fs.readFileSync(urlPath, {"encoding":"utf8"}); 
} catch (err) { 
    console.log("Error reading url file..."); 
    throw err; 
} finally { 
    console.log("File read!"); 
    var array = data.split("\n"); 

    console.log("Found " + array.length + " urls"); 

Mã này được gọi từ một chương trình nút, mà cần phải chờ đợi cho đến khi tất cả các hoạt động trong tập tin này được thực hiện. Thật không may, quá trình con đang thoát với mã 0 trước khi bất kỳ mã nào trong khối finally được thực hiện.

Điều này khiến tôi tin rằng ngay cả try-catch-finally cũng không đồng bộ. Đúng không?

+0

Đó thực sự sẽ không có ý nghĩa. –

+0

Có lẽ tôi nên mở một câu hỏi mới, tôi chỉ cần thêm một số báo cáo khai thác ở nơi khác và nó xuất hiện quá trình con là thoát mà không cần chạy chúng. – krb686

+0

@MattBall vui lòng tham khảo câu hỏi này: http://stackoverflow.com/questions/17572834/child-process-in-node-js-mysteriously-exiting-between-lines-of-synchronous-code – krb686

Trả lời

16

Câu hỏi của bạn bị gây nhầm lẫn.

Toàn bộ ngôn ngữ Javascript hoàn toàn đồng bộ; tất cả các cấu trúc ngôn ngữ, bao gồm các khối catchfinally, sẽ thực thi đồng bộ trước khi chạy dòng mã tiếp theo.

Tuy nhiên, họ không biết về bất kỳ hoạt động không đồng bộ nào có thể đã bắt đầu và sẽ không đợi họ hoàn tất.

+0

Vui lòng tham khảo câu hỏi này : http://stackoverflow.com/questions/17572834/child-process-in-node-js-mysteriously-exiting-between-lines-of-synchronous-code – krb686

Các vấn đề liên quan