2016-12-22 128 views
-4

我得到這個代碼,在‘/ API /降價/文件名’如何避免回調地獄?

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) 
        }); 
       }; 
      }); 
     }); 
    }); 
}); 

但我有很多回調的結束提供從「./markdown」的文件,我該如何避免這種情況?

+1

這也正是你問1小時前同樣的問題。 http://stackoverflow.com/questions/41289621/avoiding-callback-hell。請不要詢問多個相同的問題,並在詢問之前檢查已有的答案 – baao

回答

-1

你有2種方法來避免這種回調地獄,這是

  1. 名稱的功能,宣佈它們並通過 函數作爲回調的只是名字,而不是定義一個匿名函數 中主函數的參數。

  2. 模塊化:將您的代碼分離爲模塊,因此您可以導出執行特定工作的代碼段 。然後,您可以將該 模塊導入您的較大應用程序[1]

,你可以參考這個鏈接,解釋,以避免回調地獄最好的方法:http://callbackhell.com/

+0

我建議您針對上面列出的每種方法的代碼示例可能有助於OP更好地理解問題,並使答案完整。 –