我以前从未看过角度,而且我正在开发一个广泛使用它的项目,我对promise api代码感到很困惑。
如果一个函数返回promise.then(我收集的是在履行承诺时调用的)这是promise函数的结果吗?当你这样做时,是否有任何阻塞,因为结果不能立即获得?
一个粗略的例子:
$scope.refreshFilters = function (filters) {
var promise;
promise = getConfig(filters);
return promise.then(function (data) {
return data.availableContent;
});
};
对refreshFilters函数的调用是否需要立即阻止,因为结果不能立即使用?
答案 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;
});
};
实际上是在回复一个承诺。