回撥地獄

當你在回撥函式中巢狀太多的回撥函式時,會出現回撥地獄(也是一個厄運或迴旋鏢效果的金字塔)。以下是讀取檔案的示例(在 ES6 中)。

const fs = require('fs');
let filename = `${__dirname}/myfile.txt`;

fs.exists(filename, exists => {
    if (exists) {
        fs.stat(filename, (err, stats) => {
            if (err) {
                throw err;
            }
            if (stats.isFile()) {
                fs.readFile(filename, null, (err, data) => {
                    if (err) {
                        throw err;
                    }
                    console.log(data);
                });
            }
            else {
                throw new Error("This location contains not a file");
            }
        });
    }
    else {
        throw new Error("404: file not found");
    }
}); 

如何避免回撥地獄****

建議巢狀不超過 2 個回撥函式。這將有助於你保持程式碼可讀性,並且將來我將更容易維護。如果你需要巢狀 2 個以上的回撥,請嘗試使用分散式事件

還有一個名為 async 的庫,可以幫助管理 npm 上可用的回撥及其執行。它增加了回撥程式碼的可讀性,使你可以更好地控制回撥程式碼流,包括允許你並行或序列執行它們。