Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在英语中,哪个更好。success()还是。then()_Javascript_Angularjs - Fatal编程技术网

Javascript 在英语中,哪个更好。success()还是。then()

Javascript 在英语中,哪个更好。success()还是。then(),javascript,angularjs,Javascript,Angularjs,我正在对服务器进行ajax调用,以获取一些数据 $.ajax( { url: "myserver", method: "GET", }.success(function(data) { } .error(function(e) { } ) 我一直在读关于。然后() 使用.then()而不是.success()有什么性能优势吗 是否有任何特定的场景我应该使用.then()和.success() 另外,无论谁回答,请简短地告诉我什么是承诺。我建议使用.then()和.catch()。这些方法符合标

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

$.ajax(
{
url: "myserver",
method: "GET",
}.success(function(data)
{ }
.error(function(e)
{ }
)
我一直在读关于。然后()

使用.then()而不是.success()有什么性能优势吗

是否有任何特定的场景我应该使用.then()和.success()


另外,无论谁回答,请简短地告诉我什么是承诺。

我建议使用
.then()
.catch()
。这些方法符合标准。当您使用其他Promise库时,它们更有可能使用这两种方法


我也会避免使用
.then(successCallback,failureCallback)
方法,因为它不是标准的,也不太明显。

您应该使用
然后
,因为
成功
错误
已经被弃用

$http

$http legacy promise方法的成功和错误已被删除 不赞成。改用标准then方法。如果 $httpProvider.useLegacyPromiseExtensions设置为false,则这些 方法将抛出$http/legacy错误


这是一篇很好的文章,可以帮助你理解承诺

2之间的主要区别在于
.then()
调用返回承诺(使用回调返回的值进行解析),而
.success()
是注册回调的更传统的方式,不返回承诺。

。然后()调用返回承诺,而则返回成功()是注册回调的更传统的方式,它不返回承诺


此外,.then()通常用于需要链接承诺的地方,而.success()方法是一种简化的、方便的方法,当您不需要链接调用或使用承诺API时。

我个人更喜欢
。then()
,是一个关于为什么
不喜欢的非常好的博客。success()

对于API调用,我将执行以下操作:

$http.get('www.domain.com/someAPI').then(function (results) {
    // On successful promise
    doSomethingHere();
}, function (error) {
    // On failed promise
    handleError();
});

.Success和.then的工作原理相同,但这两个响应单元之间存在很大差异,在angular和ajax成功中,在晚上事情完成后,它们的工作原理相同,您可能需要先获取响应数据,然后再获取User.Success

然后它发生在成功之前,成功之后。 因此,如果您在html代码中有加载条,请在成功加载之前使用。。。
成功后使用。然后隐藏它。

可能重复@ItaloAyres他实际上在问
$和承诺之间有什么区别。这个问题还有很多。你能不能添加几行关于什么是Promise的内容看看es6文档-。它们是摆脱回调地狱的一种方法,允许您返回一个承诺,并基本上链接
.then(fn).then(fn).catch(errFn)
不要引用我的话,但我的猜测是
.success()
比承诺更快,因为您只是在调用回调函数。而在创建承诺时,会创建一个新的承诺实例,然后调用函数。但实际上你可能不会注意到区别。
catch(cb)
只是
then(null,cb)
shorthand有这样的东西吗?.success()比.then()快还是没有这样的东西?没有,没有那样的东西。此外,我看到很多教程建议我们使用.then()而不是.success()。请阅读本文档,jQuery的
ajax()
方法返回自己的对象,
jqXHR
,每次调用success等方法,都会继续返回
jqXHR
对象,这意味着您可以像
success()一样继续链接。然后()
至于Angle的HttpPromise
success()
返回一个承诺,即创建的原始承诺,
。然后
虽然返回一个新承诺