我很新的節點和JS,我還沒有收到有關的回調和異步編程直到昨天的想法,所以我就像個白癡和我說話,「因爲我是...我在想回調是正確的嗎?
隨着混合物的死亡。我以爲我會寫我自己的小靜態網站建設者。我看着咕嘟咕嚕咕嚕咕嚕咕嚕咕嚕咕嚕咕嚕咕嚕咕嚕咕嚕咕嚕咕嚕咕嚕叫。
構建CSS,縮小,上市等等非常簡單,但是當涉及到構建頁面時,生活很快就陷入了回調地獄。
的閱讀了一下,我對網頁腳本建築開始:
var fm = require('front-matter'),
fs = require('fs'),
glob = require('glob'),
md = require('marked');
const SEARCHPATH = "content/pages/";
pages = [];
function searchFiles() {
glob("*.md", { cwd: SEARCHPATH }, readFiles);
}
function readFiles (err, files) {
if(err) throw err;
for (var file of files) {
fs.readFile(SEARCHPATH + file, 'utf8', processFiles);
}
}
function processFiles(err, data) {
if(err) throw err;
var attributes = fm(data).attributes;
var content = md(fm(data).body);
pages.push(attributes, content);
applyTemplate(pages);
}
function applyTemplate(pages) {
console.log(pages);
}
searchFiles();
但它看起來真像我即將陷入菊花鏈地獄,每個函數調用接下來,但是我不能在不這樣做的情況下訪問頁面變量。
這一切似乎有點關閉。
我在想這個權利嗎?以編程方式構建這個更好的方法是什麼?
非常感謝Overflowers。
你已經完成了一個很好的工作,使你的結構扁平化並使其可讀。你正在創建你自己的模塊嗎?這是保持您的代碼清潔和各自關切的另一件好事。 – lintmouse
除非您正在執行異步操作的回調,否則不需要每個函數都可以調用下一個函數並越來越深地進入堆棧。其他代碼可以看起來像你喜歡的。 –
感謝dustmouse。不,我不是。你會推薦作爲下一步嗎?我確信我沒有考慮這個權利:我仍然希望能夠依次調用searchFiles(),readFiles()和processFiles(),並且能夠隨時訪問頁面var。 – Adam