iT邦幫忙

0

請問關於node.js執行順序的問題

請問一下,我寫了一段程式碼,要用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!")}
	});
	}

1 個回答

5
bigsmile
iT邦新手 4 級 ‧ 2015-12-17 00:40:51

node.js預設是非同步操作,所以執行結果的順序不一定會按照你函式執行的順序。解法有二:

1.使用 node.js 的同步操作函式,像檔案的讀寫好像都有提供
2.使用callback的寫法,執行a完後,傳入接下來的程式當callback,可以用promise的寫法

wordsmith iT邦高手 1 級 ‧ 2015-12-17 10:27:21 檢舉

聽起來是這樣沒錯

我要發表回答

立即登入回答