我正在对服务器进行ajax调用以获取一些数据。
$.ajax(
{
url: "myserver",
method: "GET",
}.success(function(data)
{ }
.error(function(e)
{ }
)
我一直在阅读 .then()。
在.success()上使用.then()有什么性能优势?
我是否应该使用.then()和.success()?
另外,无论谁回答,请简要介绍一下什么是承诺。
答案 0 :(得分:3)
您应该使用then
,因为success
和error
已被弃用。
https://docs.angularjs.org/api/ng/service/ $ HTTP
$ http遗留承诺方法成功与错误 弃用。请改用标准方法。如果 $ httpProvider.useLegacyPromiseExtensions设置为false然后这些 方法将抛出$ http / legacy错误。
答案 1 :(得分:2)
.then()调用返回一个承诺,而 .success()是更传统的注册回调方式,并且不会返回承诺。
此外.then()通常用于需要链接promises的地方,而.success()方法是一种简化的方便方法,当你不需要链接调用或使用promise API时。
答案 2 :(得分:1)
我建议使用.then()
和.catch()
。这些方法符合CommonJS标准。当您使用其他Promise库时,他们更有可能使用这两种方法。
我也会避免使用.then(successCallback, failureCallback)
方法,因为它不是标准的,也不那么明显。
答案 3 :(得分:1)
这篇文章很有帮助您了解Promise
http://andyshora.com/promises-angularjs-explained-as-cartoon.html
和
2之间的主要区别在于.then()
调用返回一个promise(使用回调返回的值解析),而.success()
是更传统的注册回调方式并且不返回承诺。
答案 4 :(得分:0)
我个人更喜欢.then()
,here是一个非常好的博客,说明为什么.success()
不是首选。
对于API调用,我会这样做:
$http.get('www.domain.com/someAPI').then(function (results) {
// On successful promise
doSomethingHere();
}, function (error) {
// On failed promise
handleError();
});
答案 5 :(得分:0)
.success和.then的工作原理相同,但是响应单元之间有很多差异,在完成事情之后,在angular和ajax中,成功的工作原理相同,您可能需要先获取响应数据,然后再使用User .success,
在.then中,它发生在.Success之前和之后。 因此,如果您在html代码中使用了加载栏,则在成功之前使用.then进行加载... 并在成功后使用.then进行隐藏。