首页 >web前端 >js教程 >为什么使用 Promise .then 方法进行回调是一个坏主意?

为什么使用 Promise .then 方法进行回调是一个坏主意?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-16 09:03:02768浏览

Why are Callbacks with Promise .then Methods a Bad Idea?

使用带有 Promise .then 方法的回调带来的不良后果

寻求一种更优化的方法来管理异步操作,开发人员可能会偶然发现以下建议:在 AngularJS 服务中使用回调函数。然而,此类做法值得仔细审查,因为它们可能会导致不良结果。

在提供的代码片段中,tokenService 在其 getTokens 方法中使用回调来处理 HTTP 请求的结果。然而,这种方法存在一些缺点:

  • 流程中断:它阻碍了成功和失败处理程序的无缝链接。
  • 控制反转: 它将响应处理的控制权从调用者转移到被调用的模块,这可能会导致混乱。
  • 不一致的 Promises: 虽然代码包含了 Promise,但回调仍然用于处理响应,造成认知失调。

重构面向 Promise 的处理

要纠正这个问题,应该重新设计代码以完全拥抱 Promise 的异步特性。在修订版本中, getTokens 方法仅返回一个 Promise,调用者可以在自己的 then 方法中使用该 Promise:

var getTokens = function() {
  return $http.get('/api/tokens');
};
yourModule.getTokens()
  .then(function(response) {
    // handle it
  });

以 Promise 为中心的设计的好处

与基于回调的方法相比,这种方法具有许多优势:

  • 增强的流程:操作可以更有效地链接在一起,确保逻辑和简化的执行流程。
  • 清晰度:响应处理的责任仍然由调用者承担,消除了歧义。
  • 一致性:Promise 在整个代码库中一致使用,促进理解和可维护性。

通过了解使用带有 Promise .then 方法的回调的缺点并采用更加面向 Promise 的方法,开发人员可以显着改进其异步代码处理实践。这会带来更清晰、更易于管理的代码,从而增强开发人员体验并促进更易于维护且无错误的代码库。

以上是为什么使用 Promise .then 方法进行回调是一个坏主意?的详细内容。更多信息请关注PHP中文网其他相关文章!

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