如何避免回调地狱?

时间:2016-12-22 20:05:11

标签: javascript node.js express asynchronous

我从'/ api / markdown / filename'获得了'./markdown'文件的代码

var apiRouter = express.Router();

apiRouter.get('api/markdown/:reqFile', function(req, res) {
    fs.readdir(markdownFolder, function(err, markdown) {
        if (err) throw err;
        markdown.forEach(function(file) {
            fs.readFile(markdownFolder + file, 'utf8', function(err, file_content) {
                if (err) throw err;
                fileNoExtension = file.slice(0, file.indexOf('.'));

                if (req.params.markdown_file_noext == reqFile) {
                    res.json({ 
                        'title': fileNoExtension,
                        'markdown': marked(file_content)
                    });
                };
            });
        });
    });
});

但是我结束了很多回调,我该如何避免这种情况?

1 个答案:

答案 0 :(得分:-1)

你有2种方法可以避免这种回调地狱,这是

  1. 命名您的函数并声明它们并仅传递其名称 用作回调,而不是定义匿名函数 在主函数的参数中。

  2. 模块化:将代码分成模块,以便导出 执行特定工作的代码部分。然后你可以导入它 模块放入较大的应用程序[1]

  3. 你可以参考这个链接,它解释了避免回调地狱的最佳方法:http://callbackhell.com/