我已经在角色官方文档中阅读了$ q.when的文档,但我不明白$ q.when及其管理响应的方式的目的是什么。
答案 0 :(得分:9)
$q.when
接受承诺或普通价值并将其转换为承诺。如果它已经是一个承诺,它只是返回它。
如果您不知道您正在处理的对象是否是承诺,这将非常有用。例如,您可能有一个if / else语句,其中一个路径返回一个promise但另一个路径直接返回一个值。在这种情况下,最好使用$q.when
来处理回报,以便从中获得价值,无论它是否是承诺。
例如:
function getData(){
if(cachedData) return $q.when(cachedData); // converts to promise
else return $http.get("/dataUrl"); // make HTTP request, returns promise
}