Angularjs处理ajax与成功/错误和承诺有什么区别?
我不确定应该在哪里处理ajax请求的响应 有两种口味Angularjs处理ajax与成功/错误和承诺有什么区别?,angularjs,Angularjs,我不确定应该在哪里处理ajax请求的响应 有两种口味 通过$http的成功/错误回调处理 通过promise result中的then()方法处理 两人的反应与预期一致。但是,我认为在使用每一个方面都有一个“陷阱”。谷歌没有给我指路。js源代码有点。。。对我来说很神秘 注意:我的示例(1)总是先响应,然后(2)再响应。我认为这只是因为localhost延迟几乎为null,而且它们都是异步方法 $http({ method: 'POST', url: 'ping.php',
$http({
method: 'POST',
url: 'ping.php',
headers: {'content-type' : 'application/json'}
}).
success(function(data, status, headers, config) {
console.log("Flavour one success");
}).
error(function(data, status, headers, config) {
console.log("Flavour one error");
}).then(function() {
console.log("Flavour two success"); },
function() { console.log("Flavour two error");
})) 根据角度文档
{HttpPromise}
–使用标准的然后方法返回一个promise对象
还有两种http特定方法:success
和error
。then
方法
接受两个参数:一个成功
和一个错误
回调
使用响应对象调用。success
和error
方法需要
单参数-请求时将调用的函数
分别成功或失败
要回答您的问题,唯一的区别是success
和error
只接受一个参数,而then
接受两个参数
第一个总是在第二个之前被调用,这仅仅是因为您按顺序列出了它,这就是承诺的工作方式。如果您列出了另一个,那么它将被第三次调用。在基本的成功/错误回调中使用承诺有一些好处。一个好处是,您可以按描述将它们链接起来
连锁承诺
因为调用承诺的then方法会返回一个新的派生承诺,所以很容易创建承诺链:
可以创建任意长度的链,并且由于一个承诺可以用另一个承诺解决(这将进一步推迟其解决),因此可以在链中的任何点暂停/推迟承诺的解决。这使得实现像$http的响应拦截器这样的强大API成为可能
您还可以使用合并多个承诺。这在引导一个依赖于多个资源才能加载的应用程序时非常有用。My google和@ClydeByrdIII他没有问回调和承诺之间的区别。他在询问成功
、错误
和然后
函数之间的区别。可能重复“但不要成功
和错误
返回承诺”(查看原始帖子…他就是这么做的。)有点…$http返回承诺”两个$http特定方法:成功和错误“@MariusSoutier您不能链接多个success
和error
调用,但您可以链接然后来自success
或error
调用的调用。
promiseB = promiseA.then(function(result) {
return result + 1;
});
// promiseB will be resolved immediately after promiseA is resolved and its value
// will be the result of promiseA incremented by 1`