2016-11-24 176 views
1

我讀了很多關於如何在NodeJS中創建異步函數的文章,但我無法弄清楚!我知道這是最問的話題,但看看這個示例代碼在這裏:不能工作的NodeJS異步函數

function test2(){ 
console.log("Check x"); 
} 
function test(callback){ 
    for(var i=0;i<1000000000000;i++){} 
    callback(); 
} 

console.log("Check 1"); 
test(test2); 
console.log("Check 2"); 
console.log("Check 3"); 

現在不應該考慮的NodeJS測試是一個同步的功能!? 如果不是那麼我該如何創建它,以便我可以達到檢查2和3的日誌記錄,而無需等待循環結束?

+2

使用'的setTimeout' – Mahi

+1

沒有什麼異步在你的代碼。 –

回答

0

並非Node.js中的所有內容都是異步的。當I/O或事件涉及像訪問文件系統,處理網絡請求,讀取從數據庫的數據等 異步過程只發生

實施例:

var fs = require('fs); //node.js built-in file system which requires I/O from storage 
function getDataFromFile(callback) { 
    //fs.readFile is asynchronous process 
    fs.readFile('path/to/file', (err, data) => { 
    if (err) throw err; 
    callback(data); 
    }); 
} 
getDataFromFile(function(data) { 
    //this is asynchronous callback from getDataFromFile() 
    console.log('data ' + data); 
});