两种链接ajax jquery调用的方法。正确对象,真爱?

问题描述:

我Ajax调用的下一个链条:两种链接ajax jquery调用的方法。正确对象,真爱?

ajaxCall1().then(function(){ 
    ajaxCall2(). then(function(){ 
     ajaxCall3().then(function(){ 
      .... 
     }) 
    }) 
}) 

正如你所看到的,我没有返回Ajax调用但它只是正常工作。接下来的方法就是我所看到的例子:

ajaxCall1() 
    .then(function(){ 
     return ajaxCall2() 
    }) 
    .then(function(){ 
     return ajaxCall3() 
    }).then(function(){ 
     .... 
    }) 

什么是正确的方法?

由于

第一图案实际上是一个well-known promise anti-pattern

承诺的可链接性允许我们摆脱嵌套回调并保持垂直结构。

+0

好的,但我可以确保ajax调用不在同一时间执行的第一种方式,对吧?虽然根据模式是不好的风格 – user3254515

+0

第二种方式和第一种方式都是顺序执行你的ajax函数。 – nem035

第二个。在第一个中,您不会创建承诺链。第一个应该是这样的:

ajaxCall1().then(function() { 
    return ajaxCall2().then(function() { 
    return ajaxCall3().then(function() { 
     ..... 
    }) 
    }) 
}) 

但即使如此,你有深嵌套,这是一般的不好的编码风格。

如果要并行执行的请求,这些请求不依赖于对方,在他们这样做不要紧,你可以写的顺序:

Promise.all([ 
    ajaxCall1(), 
    ajaxCall2(), 
    ajaxCall3() 
    ]) 
    .then(results => { 

    }) 

如果订单事宜,然后使用你的第二种方法。

+0

如果有时您返回ajax调用或者有时不是因为不需要,如何编写第一种方式? – user3254515

+0

@ user3254515我不完全明白你在问什么。 –

+0

我的意思是,如果一个ajax调用的响应是错误,如何中断ajax调用链? – user3254515