Ni55aN
@Ni55aN

Как «смягчить» влияние callback'ов в JS?

Особых трудностей при асинхронном программировании и программировании на JS не возникает, но с разрастанием проекта возникает необходимость в рамках одного контекста выполнять сразу несколько асинхронных запросов (особо актуально на Node.js), и бывает так, что уже на третьем вложении скобки и все остальное к анонимным коллбэкам начинает мозолить глаза.
Например:
do.smth1(function(arg1){
		
	////code
	////code
	////code
 
 
	do.smth2(function(arg2){
			
		////code
		////code
		////code
			
		do.smth3(function(arg3){
			
			////code
			////code
			////code

		});

	 });

});


Основная задача в том, чтобы выполнять асинхронные запросы последовательно, но вот с такими вложениями код становится плохо читаемым. Какие есть варианты для структурирования таких вещей в Node.js?
  • Вопрос задан
  • 241 просмотр
Решения вопроса 1
k12th
@k12th
console.log(`You're pulling my leg, right?`);
  1. Избегайте анонимных функций в любом случае, именованные легче рефакторить и дебажить.
  2. Используйте промисы
  3. Попробуйте async/await


Если два последних пункта по каким-то причинам не подходят — старый добрый async.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Ответ написан
Комментировать
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
Странно, что никто не предложил
https://learn.javascript.ru/generator#библиотека-co
https://www.npmjs.com/package/co

По сути будет достаточно расположить co вызов на самом верхнем уровне цепочки и вызывать "елдабельные" функции через yield fun(...)
Ответ написан
Промисы или для каждого колбэка делай отдельную функцию/метод.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы