Javascript 链接ajax jquery调用的两种方法。对吗?
我有下一个ajax调用链:Javascript 链接ajax jquery调用的两种方法。对吗?,javascript,jquery,ajax,promise,chain,Javascript,Jquery,Ajax,Promise,Chain,我有下一个ajax调用链: ajaxCall1().then(function(){ ajaxCall2(). then(function(){ ajaxCall3().then(function(){ .... }) }) }) 正如您所看到的,我没有返回ajax调用,但它工作正常。下一种方法是我所看到的示例: ajaxCall1() .then(function(){ return ajaxCa
ajaxCall1().then(function(){
ajaxCall2(). then(function(){
ajaxCall3().then(function(){
....
})
})
})
正如您所看到的,我没有返回ajax调用,但它工作正常。下一种方法是我所看到的示例:
ajaxCall1()
.then(function(){
return ajaxCall2()
})
.then(function(){
return ajaxCall3()
}).then(function(){
....
})
正确的方法是什么
谢谢第一个图案实际上是一个
承诺的可链接性允许我们摆脱嵌套回调并保持垂直结构 第二个。在第一种情况下,您不会创建承诺链。第一个应该这样看:
ajaxCall1().then(function() {
return ajaxCall2().then(function() {
return ajaxCall3().then(function() {
.....
})
})
})
但即使这样,您也有深度嵌套,这通常是一种糟糕的编码风格
如果希望并行执行请求,则这些请求彼此不依赖,并且它们的执行顺序无关紧要,您可以编写:
Promise.all([
ajaxCall1(),
ajaxCall2(),
ajaxCall3()
])
.then(results => {
})
如果顺序很重要,那么使用第二种方法。好的,但是第一种方法可以确保ajax调用不会同时执行,对吗?虽然根据模式,第二种方法和第一种方法都是按顺序执行ajax函数。如果有时返回ajax调用,或者有时不需要,那么如何编写第一种方法?@user3254515我不太明白你在问什么。我的意思是,如果一个ajax调用的响应是错误的,如何断开ajax调用链?@user3254515如果使用第二种方法,则链将自动断开。因此,如果
ajaxCall1
失败,则将不会执行ajaxCall2
和ajaxCall3
。如果ajaxCall2
失败,那么ajaxCall3
将不会被执行。我的意思是,不完全是ajax错误,只需评估响应中的某些内容并断开链即可