請問一下,我寫了一段程式碼,要用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的寫法