請問一下,我寫了一段程式碼,要用node執行,
其預期結果應該是在console顯示:
Create file
Appened text to file success!
Finalize file success!
但是詭異的事情發生了,執行完居然剛好倒過來,
請問有高手可以幫忙解答這是為什麼嗎?
var caseFS=require('fs');
createFile();
appendFile("My Test 1234");
finishCreateFile();
// ================ 建立新的紀錄檔 =====================
function createFile(){
var bufwrite=" \r\n" + "<html lang=\"en\">\r\n"+"\r\n"+"\t<meta charset=\"UTF-8\">\r\n"+ "\t<title>Test Report</title>\r\n"+"\r\n"+" \r\n";
caseFS.writeFile(recordFileName,bufwrite,function(err){
if(err){console.log(err);}else{console.log("Create file")}
});
}//end of function createFile()
// ================ 添加到紀錄檔 =====================
function appendFile(strappend)
{
caseFS.appendFile(recordFileName,strappend,function(err){
if(err){console.log(err);}else{console.log("Appened text to file success!")}
});
}
// ================ 結束檔案建置 =====================
function finishCreateFile()
{
var endPage="\r\n \r\n";
caseFS.appendFile(recordFileName,endPage,function(err){
if(err){console.log(err);}else{console.log("Finalize file success!")}
});
}
node.js預設是非同步操作,所以執行結果的順序不一定會按照你函式執行的順序。解法有二:
1.使用 node.js 的同步操作函式,像檔案的讀寫好像都有提供
2.使用callback的寫法,執行a完後,傳入接下來的程式當callback,可以用promise的寫法