@Chilace

Как правильно делать возврат из коллбэка (преобразование вебхука)?

Добрый день, уважаемые.
Понадобилось мне как-то написать небольшой скрипт, преобразующий запросы из Callback API ВКонтакте в соответствующие вебхуки в мессенджер, используемый нашей группой. И, так-как с программированием я знаком поверхностно, меня смущает один вопрос - какой вариант является корректным, "res.end('ok')" или "return res.end('ok')" внизу приведенного примера ?
Оба варианта работают, но мне кажется, что здесь есть подводный камень.

const http = require('http');
const jsonBody = require('body/json');
const request = require('request');
// ~~~
function mapWebhook(body) {
  // ~~~
  return options;
}
http.createServer(function(req, res) {
  jsonBody(req, res, function(err, body) {
    if (err) {
      res.statusCode = 400;
      return res.end(err.message);
    }
    if (body.type === 'confirmation') {
      return res.end(confirmToken);
    }
    let options = mapWebhook(body);
    request(options, function(error, response, body) {
      if (error) {
        res.statusCode = 500;
        return res.end(error.message);
      }
      return res.end('ok'); // Или "res.end('ok');"  ?
    });
  });
}).listen(8080);
  • Вопрос задан
  • 237 просмотров
Решения вопроса 1
Все просто: если это последняя инструкция в функции и функция ничего не должна возвращать, то return делать не обязательно. Если же колбэк вызывается где-то по середине или вначале, то лучше делать return, чтобы быть уверенным, что после вызова колбэка функция не продолжит дальше выполнятся.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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