我知道Node.js通過使用事件循環具有事件驅動的異步回調的概念。Node.js - 執行傳遞給另一個函數的匿名函數
database.query("SELECT * FROM hugetable", function(rows) { var result = rows; });
console.log("Hello World");
在這裏,而不是期待database.query()的結果直接返回給我們,我們把它傳遞第二個參數,匿名函數。 現在,Node.js可以異步處理數據庫請求。假設database.query()是異步庫的一部分,這就是Node.js所做的:和以前一樣,它將查詢發送到數據庫。但是不要等待它完成,它會讓人記住一句話:「在將來某個時刻數據庫服務器完成併發送查詢結果時,我必須執行傳遞給它的匿名函數database.query()「。
我想同一個示例代碼(因爲我是一個新手,沒有達到直到Node.js的DB交互):
[[email protected]]# cat server8.js
function myfun(noparm , afterend)
{
for (var i =0; i < 10; i ++)
console.log("The valus is " + i);
}
function mynextfn()
{
console.log("Hello World");
}
function afterend()
{
console.log("Hello afterend");
}
myfun(0, afterend);
mynextfn();
[[email protected] example]# node server8.js
The valus is 0
The valus is 1
The valus is 2
The valus is 3
The valus is 4
The valus is 5
The valus is 6
The valus is 7
The valus is 8
The valus is 9
Hello World
[[email protected]]#
因此我不看「的概念,事件驅動,異步回調,利用事件循環「?
任何人都可以請幫我實施一些基本的例子嗎?
謝謝 - 請解釋你的意思是「myfun函數是完全同步的,所以Node.js沒有機會在myfun函數的內容之前運行mynextfn。」 – Prakash
我想說的是,myfun不會將任何東西委託給另一個以異步方式執行某些操作的函數,例如I/O。它只是一個循環在主(單個)線程中運行。 –