2017-10-18 6 views
2

私はAJAX呼び出しの次のチェーンを持っている:ajax jquery呼び出しを連鎖させる2つの方法。合っているもの?

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

あなたは、私は、AJAX呼び出しを返さないのですが、そのはうまく動作見ることができるように。次の方法は、私が例として見たものです:

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

正しい方法はありますか?

おかげ

答えて

3

最初のパターンは、実際にwell-known promise anti-patternです。

約束の連鎖性により、ネストコールバックから離れて垂直構造を維持することができます。

+0

しかし、最初の方法では、Ajaxコールが同時に実行されていないことを確認できます。パターンによると悪いスタイルですが – user3254515

+0

第2の方法と最初の方法は、どちらも順番にあなたのajax関数を実行しています。 – nem035

3

第2のもの。最初のものでは、約束を作りません。最初のものはそのようになります。

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

しかし、たとえを、あなたは一般的に悪いコーディングスタイルで深いネストを持っています。

あなたが並行して要求を実行したい場合は、これらの要求は、互いに依存していないとそれらが行われる順序は、あなたが書くことができる問題ではありません:

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

    }) 

ための事項は、次に使用する場合あなたの2番目のアプローチ。

+0

ajax呼び出しを返すことがある場合や、必要でない場合があるため、時には最初の方法を書き込む方法はありますか? – user3254515

+0

@ user3254515私はあなたが求めていることを正確に理解していません。 –

+0

私は、1つのajax呼び出しの応答がエラーの場合、ajax呼び出しのチェーンを壊す方法を意味しますか? – user3254515

関連する問題