Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.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 链接ajax jquery调用的两种方法。对吗?_Javascript_Jquery_Ajax_Promise_Chain - Fatal编程技术网

Javascript 链接ajax jquery调用的两种方法。对吗?

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

我有下一个ajax调用链:

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错误,只需评估响应中的某些内容并断开链即可