首页  >  文章  >  web前端  >  你应该在 AngularJS Promise 中使用回调吗?

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

Barbara Streisand
Barbara Streisand原创
2024-11-09 20:22:02802浏览

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn