Widziałem odpowiedzi na StackOverflow gdzie ludzie sugerują dostarczenie funkcji zwrotnej do usługi AngularJS.Dlaczego wywołania zwrotne z Promise `.then` Methods Anti-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
};
});
Wydaje mi się, że to anty-wzór. Usługa $http
zwraca obietnice i wykonanie metod wywołania zwrotnego sprawia wrażenie niezdrowej inwersji kontroli.
Jak działa ten jeden kod ponownie kod i jak wyjaśnić, dlaczego oryginalny sposób był nie jest dobrym pomysłem?
Po prostu powiedz ludziom, żeby rzeczywiście korzystali z obietnic zamiast ich ignorować. – SLaks
Zauważyłem, że używanie 'obietnicy' jest w pewnym sensie zdrowe, ponieważ ma zdolność do łańcuchowania i kontroli nad połączeniem asynchronicznym. –
Głównym problemem jest to, że gdy nic nie jest zwracane w 'then()' nie ma gdzie złapać błędów w wywołaniu zwrotnym. Łamie obietnicę łańcuchową – charlietfl