javascript - 从另一个 promise 返回 promise 的原因?

标签 javascript angularjs promise

在下面的代码中,从 success 返回另一个 promise 的原因是什么?或err方法?如您所见,someFunction已经返回了一个 promise ,我们可以轻松地将其返回给调用者。

我不明白在我们不装饰/操纵响应或错误的情况下做出另一个 promise 的原因。是否有我不知道的用例?

function() {
    var p = $q.defer();

    someModule.someFunction(input)
    .then(
      function(success) {
        return p.resolve(success);
      },

      function(err) {
        return p.reject(err)
      }
    );

  return p.promise;
};

最佳答案

这整个事情可以替换为:

function someFunc() {
    return someModule.someFunction(input);
}

创建自己的 Promise 被认为是一种反模式,然后当您可以使用已经存在的 Promise 时,您可以解析并拒绝该 Promise。

不执行任何操作的成功和错误处理程序被认为是一种反模式,这些处理程序基本上只执行默认行为。

实际上,您的代码片段与直接返回 Promise 的唯一不同之处在于,它确保返回的 Promise 是 Q Promise,而不是返回任何类型的 Promise .someFunction() 。但是,如果这是一个要求,那么它可以更直接地转换为 Q promise ,而无需所有额外的代码。

这是一个discussion of promise anti-patterns要避免,因为有更好的方法。

关于javascript - 从另一个 promise 返回 promise 的原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32671998/

相关文章:

javascript - 无法禁用简单的 a 标签

javascript - 在循环中链接嵌套的 promise

javascript - 为什么map函数在promise之后没有执行?

javascript - 如何在与 Sails 0.10.x 的一对多关系中引用关联模型

javascript - Jquery 可拖动多项目

javascript - 在 AngularJS 模板中增加一个变量

AngularJS 路由,从 URL 中删除 #

javascript - 为什么我的代码按照它的顺序执行

javascript - 如何阻止 Firefox 在本地主机上缓存文本区域的内容?

javascript - 在 Eclipse 中打开 .js 扩展文件失败?