Я видел ответы на StackOverflow, где люди предлагают предоставить функцию обратного вызова службе AngularJS.Почему обратные вызовы от Promise `.then` Методы Анти-Pattern
app.controller('tokenCtrl', function($scope, tokenService) {
tokenService.getTokens(function callbackFn(tokens) {
$scope.tokens = tokens;
});
});
app.factory('tokenService', function($http) {
var getTokens = function(callbackFn) {
$http.get('/api/tokens').then (function onFulfilled(response) {
callbackFn(response.data);
});
};
return {
getTokens: getTokens
};
});
Мне кажется, что это Anti-Pattern. Служба $http
возвращает обещания, а методы .then
выполняют функции обратного вызова, похоже на нездоровое обращение к управлению.
Как один рефакторинг код как этот и как объяснить, почему исходным способом был Неплохая идея?
Просто скажите людям, что они фактически используют обещания вместо того, чтобы игнорировать их. – SLaks
Я нашел использование 'обещания', это здорово, так как он обладает способностью связывать его и контролировать асинхронный вызов. –
Основная проблема заключается в том, что ничего не возвращается в 'then()' негде ловить ошибки в обратном вызове. Это ломает цепочку обещаний – charlietfl