首页 > web前端 > js教程 > 为什么回调在 AngularJS Promise 链中有害?

为什么回调在 AngularJS Promise 链中有害?

Patricia Arquette
发布: 2024-11-13 05:08:02
原创
381 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板