Angular - 返回promise.then from function

时间:2016-03-07 14:39:43

标签: javascript angularjs promise q

我以前从未看过角度,而且我正在开发一个广泛使用它的项目,我对promise api代码感到很困惑。

如果一个函数返回promise.then(我收集的是在履行承诺时调用的)这是promise函数的结果吗?当你这样做时,是否有任何阻塞,因为结果不能立即获得?

一个粗略的例子:

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

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

“then”内部的返回返回一个不是普通值的promise, 所以

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

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