AngularJS Promise Chains でコールバックを使用することが有害である理由
よくあるように、AngularJS サービスにコールバック関数を提供することが推奨されます。以下のコード スニペット:
app.controller('tokenCtrl', function($scope, tokenService) { tokenService.getTokens(function callbackFn(tokens) { $scope.tokens = tokens; }); });
ただし、この方法はアンチパターンとして推奨されません。 $http のような AngularJS サービスは Promise を返し、コールバック メソッドをその .then メソッドにアタッチすると、望ましくない制御の反転が行われます。
リファクタリング
この問題を修正するには、次のようなコード:
app.controller('tokenCtrl', function($scope, tokenService) { tokenService.getTokens() .then(function(response) { $scope.tokens = response.data; }); });
サービス モジュール内:
app.factory('tokenService', function($http) { var getTokens = function() { return $http.get('/api/tokens'); }; return { getTokens: getTokens }; });
このリファクタリングにより、コールバック関数が削除され、.then メソッドを通じて必要な制御フローが維持されます。
リファクタリングの正当性
元のコードで実装されているコールバック:
以上がコールバックが AngularJS Promise チェーンに悪影響を与えるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。