@beginer123

В случае ошибки, обязательно ли функции что то вовзращать?

Допустим
есть функция, внутри нечто что возращает ответ,НО может и не вернуть, напрример null или ошибку исключения и тд
Как то так
getData(){
  response = какое то получение данных();
.....
};

Т.е response может либо содержать ответ, либо null, либо не корректные данные, либо ошибку и т.д
Вопрос:
Как сеньер разработчики делают
1)Всегда делают return response в конце функции, а далее уже обрабатывают его там где функция вызывается
2)Или же делают Return только если ответ пришел корректный?
  • Вопрос задан
  • 257 просмотров
Пригласить эксперта
Ответы на вопрос 4
be_a_dancer
@be_a_dancer
Middle Backend/Fullstack Developer
Обычно языки имеют такую штуку, как исключения. В случае ошибки, выполнение функции прерывается, бросается исключение. В противном случае, функция возвращает результат работы. Иногда можно обработать исключение в рамках выполнения функции. Иногда можно его обработать в месте, где эта функция вызывается. Все зависит от ситуации.
Ответ написан
mazhekin
@mazhekin
Frontend, Backend Web Developer
1) (попроще, подревнее, колбеки) голый яваскрипт, и самый нехороший способ (при большой вложенности получите колбечный ад) передавайте в функцию getData в виде параметров две функции success и error и снаружи обрабатывайте их вызовы.
var success = function(data) {...}
var error = function(errorData) {...}
getData(success, error)
2) (посложнее, посовременее, промисы) есть возможность использовать промисы? То возвращайте всегда промис из функции. А дальше обрабатывайте успех/неуспех вне функции по цепочке.
var success = function(data) {...}
var error = function(errorData) {...}
getData().then(success, error)
3) (еще посложнее, совсем модерн, потоки) есть возможность использовать библиотеку rxjs (она и в js работает). Возвращайте Observable<ваш тип> и вне функции обрабатывайте результат различными функциями rxjs (map, do, combineLatext, zip, forkJoin, catch, merge ... и много других).
var success = function(data) {...}
var error = function(errorData) {...}
getData().map(success).catch(error)

Смысл в том, что ваши функции получающие данные всегда стандартно выдают инфу с данными или ошибкой. И ничего не знают о внешнем окружении.

Так делают не то, что сеньеры, а популярные яваскрипт фреймворки
Ответ написан
AlexZaharow
@AlexZaharow
Программист.
Уважаемый Дон. Есть ещё третий вариант. Передать в функцию объект и одним из его свойств назначать, что функция действительно получила конечный результат. И без выставления этого свойства любой ответ признаётся невалидным.
Все зависит от задачи.
Ответ написан
Griboks
@Griboks
Ну и самый отбитый = действенный вариант. Крашить js, что бы весь call-stack остановился и ничего больше не делал.
Ответ написан
Ваш ответ на вопрос

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

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