首頁 >web前端 >js教程 >為什麼回調在 AngularJS Promise 鏈中有害?

為什麼回調在 AngularJS Promise 鏈中有害?

Patricia Arquette
Patricia Arquette原創
2024-11-13 05:08:02396瀏覽

Why are Callbacks Detrimental in AngularJS Promise Chains?

為什麼在AngularJS Promise 鏈中使用回調是有害的

通常建議為AngularJS 服務片段提供回調函數,如程式碼片段如下:

app.controller('tokenCtrl', function($scope, tokenService) {
    tokenService.getTokens(function callbackFn(tokens) {
        $scope.tokens = tokens;
    });
});

但是,不鼓勵這種做法作為反模式。 AngularJS 服務(例如 $http 返回承諾)以及將回調方法附加到其 .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 方法維護了想要的控制流。

重構的理由

原始程式碼中實現的回調:

  • 阻礙成功/錯誤處理程序的進一步連結。
  • 轉移控制從呼叫者模組到被呼叫模組的回應處理。
  • 引入 Promise 的複雜性,同時將它們用作回調。這個悖論使得程式碼變得混亂。

以上是為什麼回調在 AngularJS Promise 鏈中有害?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn