angular $http / jquery 完全等效
Posted
技术标签:
【中文标题】angular $http / jquery 完全等效【英文标题】:angular $http / jquery complete equivalent 【发布时间】:2013-08-11 05:44:49 【问题描述】:有没有办法用 Angular $http 模块模拟 jquery 的“完成”回调?无论请求成功还是失败,我都有一些我想执行的代码,目前我发现自己不得不写这个:
$http.get(someUrl).success(function()
successCode();
completeCode();
).error(function()
errorCode();
completeCode();
)
但我宁愿写这样的东西:
$http.get(someUrl).success(function()
successCode();
).error(function()
errorCode();
).complete(function()
completeCode();
)
我也尝试过使用 promise API,但最终遇到了同样的问题。有什么建议吗?
【问题讨论】:
【参考方案1】:2014 年 8 月更新: .always
在最新版本的 Angular 中已重命名为 .finally
。更喜欢.finally
而不是.always
。
请注意,为了支持 IE8,您必须使用括号表示法将其称为 ["finally"]
。
你可以在 AngularJS 中使用.always
这个变化是相当新的(你可以在jQuery中做一段时间),你可以看到提交here。这要求您拥有 AngularJS 1.1.5 或更高版本。
always(callback)
- 允许您观察承诺的履行或拒绝, 但是这样做而不修改最终值。这对于释放资源或做一些事情很有用 无论承诺被拒绝还是解决,都需要进行清理。请参阅full specification 更多信息。
Fiddle
【讨论】:
您应该提到它在 1.1.5 及更高版本中。 @Reno 请检查您使用的是哪个版本的 Angular 以及我添加到答案中的小提琴。 它似乎不适用于当前的角度 v1.2.15。看起来总是不存在了,我收到一个错误。有什么办法解决这个问题? 注意:angular documentation 包含以下附带条件,“因为 finally 是 javascript 中的保留字,ES3 不支持保留关键字作为属性名称,所以您需要调用类似 promise 的方法['finally'](回调)使您的代码兼容 IE8 和 android 2.x。” @dumbledad 这不是抄袭,因为您提供了署名 - 抄袭是指您声称内容是您自己的。明确允许在 SO 中引用和使用其他带有归属的答案 - 这就是内容许可(滚动到每一页的最底部 - 它总是在那里)。所以总结一下 - 是的,你所做的一切都很好,你不必在未来征求许可或通知我。以上是关于angular $http / jquery 完全等效的主要内容,如果未能解决你的问题,请参考以下文章
从 jquery $.ajax 到 angular $http
Angular $http 返回“no access control allow origin”标头,但 jQuery $.get 请求返回信息
Angular 的 $http.post 不起作用,它的 $http... 也不起作用,但 jQuerys ajax 起作用。为啥?
Django:如何在 Jquery 中使用 $getJSON 或在 Angular.js 中使用 $http.get 接收 QuerySet?