角度HTTP拦截器 - $ q.when - 它做什么?

时间:2014-10-15 16:42:45

标签: angularjs

在浏览博客并查看示例时,我在处理HTTP状态代码之后发现了Angular服务这样的代码行:

return response || $q.when(response);

return $q.reject(rejection);

$q.when$q.reject(rejection)实际上是什么意思以及为什么布尔“或”?

2 个答案:

答案 0 :(得分:2)

您可以传递$q.when承诺或类型。如果传递的参数不是promise - 那么它将把它包装在promise中并调用resolve。如果在处理可能或可能不是承诺的对象时有用。

语句response || $q.when(response)表示它可以返回值或promise。

我的猜测是这样的 - 如果响应为null,它将返回一个promise - 它将异步解析为给定值 - 这是null。

$q.reject(reason)返回被拒绝的承诺,理由是它被拒绝。它基本上是一种抛出错误的方式,可以通过catch来处理。

答案 1 :(得分:0)

虽然没有服务中的完整代码很难判断,但如果它是truthy(意味着它不是null,那么该函数将返回对象“response”,{如果回复是假的,则{1}},undefinedfalse)和promise。承诺将得到解决when响应获得价值。

这可能不是服务的最佳方式,但本质上作者希望您测试函数返回的内容。如果是承诺,请在其上调用.then()并处理该值,否则立即处理该值。