【问题标题】:How to avoid callback hell? [duplicate]如何避免回调地狱? [复制]
【发布时间】:2016-12-22 20:05:10
【问题描述】:

我得到了这段代码,它在“/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)
                    });
                };
            });
        });
    });
});

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

【问题讨论】:

标签: javascript node.js express asynchronous


【解决方案1】:

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

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

  2. 模块化:将你的代码分成模块,这样你就可以导出一个 完成特定工作的代码部分。然后你可以导入那个 模块到您更大的应用程序[1]

您可以参考此链接,该链接解释了避免回调地狱的最佳方法:http://callbackhell.com/

【讨论】:

  • 我建议您为上面列出的每种方法提供一个代码示例,这可能有助于 OP 更好地理解问题,并使这个答案变得完整。
猜你喜欢
  • 2016-06-24
  • 2017-02-09
  • 2017-05-08
  • 1970-01-01
  • 2017-08-18
  • 1970-01-01
  • 2019-02-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多