角度更好.success()或.then()

时间:2016-05-23 13:29:51

标签: javascript angularjs

我正在对服务器进行ajax调用以获取一些数据。

$.ajax(
{
url: "myserver",
method: "GET",
}.success(function(data)
{ }
.error(function(e)
{ }
)

我一直在阅读 .then()

在.success()上使用.then()有什么性能优势?

我是否应该使用.then()和.success()?

另外,无论谁回答,请简要介绍一下什么是承诺。

6 个答案:

答案 0 :(得分:3)

您应该使用then,因为successerror已被弃用。

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进行隐藏。