При использовании асинхронного программирования в NodeJS
, вы можете завершить с помощью Callback Hell
или Pyramid of Doom
, если у вас есть еще несколько асинхронных функций, которые будут вызываться один за другим, как показано ниже.
Ответный - После того, как ваша первая функция выполняется асинхронно, ваш основной поток должен быть уведомлен об этом. Для чего вы передаете функцию как callback
, которая будет запущена после завершения асинхронной операции.
Если у вас больше числа асинхронных функций в цепочке или внутри большого цикла, вам, возможно, придется передать одинаковое количество обратных вызовов, чтобы узнать о завершении каждой операции, а последнее - выполнить другие вещи, например, вернуть ответ и т. д.
Когда вы кодируете их с большим количеством обратных вызовов, становится очень сложно управлять/поддерживать и не иметь лучшей читаемости, как показано ниже.
getData(function(a){
getMoreData(a, function(b){
getMoreData(b, function(c){
getMoreData(c, function(d){
getMoreData(d, function(e){
...
});
});
});
});
});
Чтобы избавиться от этих недостатков, а также для лучшей читаемости и обслуживания, мы можем пойти с другими модулями, такими как async
, bluebird
и т.д. Вы можете выбрать все, что вам нравится, которые, кажется, лучше для вас с точки зрения понимания и удовлетворения всех требований без , что делает вещи слишком сложными.
В любом случае, это чисто до вас, чтобы пойти с callback hell
или другими модулями.
Чтобы попасть в более глубокие идеи,
https://strongloop.com/strongblog/node-js-callback-hell-promises-generators/
Я понятия не имею, что вы имеете в виду, говоря «nodejs является асинхронным из коробки». Я не знаю, что значит говорить, что любой язык или реализация являются «асинхронными». Вы имеете в виду, что некоторые функции JS, такие как функции первоклассных объектов, которые могут использоваться как обратные вызовы или неблокирующие операции ввода-вывода, поддаются асинхронному программированию? Где вы это читали? –
@torazaburo https://www.codementor.io/codeforgeek/manage-async-nodejs-callback-example-code-du107q1pn – sonance207
Это примерно похоже на высказывание: «ветчина - это еда из коробки, так зачем мне сделать сендвич?". –