Зачем в JS оборачивать именованную функцию в анонимную?

Сейчас читаю замечательную книжку про стек mean и наткнулся на странный для меня прием:
function addReview(req, res) {
	getLocationInfo(req,res,function(req,res,responseData){
		renderReviewForm(req,res,responseData);
	});
}

Т.е я вызываю функцию getLocationInfo и в качестве одного из аргументов передаю анонимную каллбек функцию, которая вызывает именованную renderReviewForm
Честно говоря пока не понял в чем смысл сего действия, нельзя ли передавать сразу именованную функцию:
function addReview(req, res) {
	getLocationInfo(req,res,renderReviewForm);
}
  • Вопрос задан
  • 488 просмотров
Пригласить эксперта
Ответы на вопрос 2
@vshvydky
скорее всего ваша функция getLocationInfo в момент своего выполнения делает какие-то нужные вам вычисления , которые потом вызываются через вызов колбека, единственное, что мне не ясно, зачем передавать req res они и так будут находиться в замыкании.
пример, допустим ваша функция должна провести работу с локейшен инфо, которое лежит в res.body.locateionData и когда данные будут получены, выполнить функцию коллбек. в которой вы сможете эти данные обработать. Я буду писать пример точно так же с передачей req res , чтобы вы могли понять суть того, что происходит.
function getLocationInfo(req, res, cb) {
    var responseData = "";
    if(res.body.locateionData) responseData = res.body.locateionData;
    cb(req,res,responseData);
}


Когда вы вызываете функцию
getLocationInfo(req,res,function(req,res,responseData){
    renderReviewForm(req,res,responseData);
  });


Вы по сути выполняете объявление функции cb
var cb = function(req,res,responseData){
    renderReviewForm(req,res,responseData);
  };


Теперь ваша функция имеет все аргументы, и готова к выполнению.
Этот пример конечно абстрактный, нужно понимать, что коллбек вызывается чаще в асинхронных ситуациях, где встроен запрос или подписка на событие и требуется сделать ожидание выполнения. Но суть он объясняет. удачи.
Ответ написан
@vintage
Видимо не такая уж книжка и замечательная :-) Нет в этом никакого смысла.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы