【问题标题】:Angular - returning promise.then from functionAngular - 从函数返回 promise.then
【发布时间】:2016-03-07 14:39:43
【问题描述】:

我以前从未看过 angular,我正在做一个广泛使用它的项目,我对 promise api 代码感到很困惑。

如果一个函数返回promise.then(我收集到它是在promise 完成时调用的)这是promise 函数的结果吗?当你这样做时是否有任何阻塞,因为结果不是立即可用的?

一个粗略的例子:

$scope.refreshFilters = function (filters) {
    var promise;
    promise = getConfig(filters);
    return promise.then(function (data) {
        return data.availableContent;
    });
};

是否需要立即阻止对 refreshFilters 函数的调用,因为结果不能立即获得?

【问题讨论】:

    标签: javascript angularjs promise q


    【解决方案1】:

    正确,promise.then(...) 本身返回一个承诺。您可以在此处找到 Promise A+ 规范,$q 主要遵循该规范:https://promisesaplus.com/

    promise 是一种处理异步工作的方式。在您的示例中,getConfig(filters) 返回一个承诺,该承诺由 .then(...) 调用处理。而refreshFilters 返回一个承诺,因为getConfig(filters).then(...) 也返回一个承诺。如果getConfig 异步执行,那么refreshFilters 也会异步执行。

    【讨论】:

      【解决方案2】:

      "then" 中的 return 返回一个 promise 而不是普通值, 所以

      return promise.then(function (data) {                    
                      return data.availableContent;
                  });
      };
      

      实际上是在返回一个承诺。

      【讨论】:

      • ... 解析为提供给then()的函数返回的值
      猜你喜欢
      • 2019-02-21
      • 1970-01-01
      • 2016-06-21
      • 1970-01-01
      • 1970-01-01
      • 2021-04-21
      • 2019-05-26
      • 2017-10-17
      • 2014-11-14
      相关资源
      最近更新 更多