首页 > web前端 > js教程 > 正文

你应该在 AngularJS Promise 中使用回调吗?

Barbara Streisand
发布: 2024-11-09 20:22:02
原创
801 人浏览过

Should You Use Callbacks with AngularJS Promises?

AngularJS 中的回调反转:反模式

在 AngularJS 中,将回调函数传递给返回 Promise 的服务是常见的做法。但是,这种方法可能会引入反模式并阻碍 Promises 的好处。

反模式示例:

考虑以下代码,其中 getTokens 服务接受回调函数:

...
getTokens: function(callbackFn) {
  $http.get('/api/tokens').then (function onFulfilled(response) {
    callbackFn(response.data);
  });
}
...
登录后复制

这种方法有几个缺点:

  • 控制反转:回调函数在服务上下文中执行,反转控制流并使其难以遵循代码。
  • 损坏的 Promise 链接:回调会阻止 Promise 被链接起来以按顺序处理多个事件或操作数据。
  • 复杂性: 显式处理回调会给代码库增加不必要的复杂性。

最佳实践重构:

要解决此反模式,重构代码如下:

...
getTokens: function() {
  return $http.get('/api/tokens');
}
...
登录后复制

在调用模块中,使用返回的Promise来处理结果:

yourModule.getTokens()
  .then(function(response) {
    // handle it
  });
登录后复制

最佳实践的好处:

采用这种最佳实践有几个优点:

  • 保留 Promise 链接: 现在可以链接 Promise 以顺序执行多个操作,从而提高代码的可读性和可维护性。
  • 简化的代码:删除回调的显式处理简化了代码库并消除了潜在的错误。
  • 提高了可测试性:Promise 为测试提供了一个干净的接口异步操作,更容易验证代码行为。

以上是你应该在 AngularJS Promise 中使用回调吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

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