2016-12-22 14 views
-4

Я получил этот код, который служит файлы из «./markdown» на „/ 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) 
        }); 
       }; 
      }); 
     }); 
    }); 
}); 

Но я закончить с большим количеством обратных вызовов, как этого избежать?

+1

Это также точно такой же вопрос вы задали один час назад. http://stackoverflow.com/questions/41289621/avoiding-callback-hell. Пожалуйста, не задавайте несколько одинаковых вопросов и проверяйте уже существующие ответы, прежде чем задавать – baao

ответ

-1

У вас есть 2 способа, чтобы избежать такого рода обратного вызова ада, которые

  1. Имя ваши функции и декларировать их и передавать только имя функции как обратный вызов, вместо определения анонимной функции в параметре главной функции.

  2. Модульность: Отделите свой код на модули, чтобы вы могли экспортировать код кода, который выполняет определенную работу, . Затем вы можете импортировать этот модуль в свое крупное приложение [1].

и вы можете обратиться к этой ссылке, которая объясняется лучшие способы избежать обратного вызова ад: http://callbackhell.com/

+0

. Я бы предложил пример кода для каждого метода, который вы указали выше, может помочь OP лучше понять проблему, а также сделать этот ответ полным. –

Смежные вопросы