我正在閱讀這篇文章,我有一個特別的疑問,如果有人明確告訴我。事件驅動的編程node.js?
http://debuggable.com/posts/understanding-node-js:4bd98440-45e4-4a9a-8ef7-0f7ecbdd56cb
var fs = require('fs')
, sys = require('sys');
fs.readFile('treasure-chamber-report.txt', function(report) {
sys.puts("oh, look at all my money: "+report);
});
fs.writeFile('letter-to-princess.txt', '...', function() {
sys.puts("can't wait to hear back from her!");
});
你的代碼給出節點兩項任務讀取和寫入文件,然後進入睡眠狀態。一旦節點完成一項任務,它的回調就會被觸發。但同時只能有一次回調觸發。在該回調完成執行之前,所有其他回調都必須排隊等待。除此之外,回調的觸發順序無法保證。
「所以我不必擔心代碼在同一時間訪問相同的數據結構?」 你明白了!這就是JavaScripts單線程/事件循環設計的完美之處!
- 任何人都可以解釋我上面的粗線。我們怎麼會不擔心這兩個不同的程序不會訪問該對象。
- 目前的線程方式有什麼問題?
- 觸發回調的順序會成爲問題嗎?讓我們把我想callBack A()在callBack b()之前先返回。
你能解釋我這個...你的第二點如何解決與nodejs ...即使我使用nodeJS我會一直等到整個文件被讀取以顯示輸出。 – theJava
馬特:你可以解釋我更多的回調地獄問題,以及如何導致這個問題。 – theJava
@theJava我已經更新了我的答案,希望能夠解答您的意見。 – Matt