私はおそらく何かが分かりません。同様の例を見つけようとしていますが、私がやりたいことと全く同じものを見つけることはできません。私は特定の順序で実行する一連のajax呼び出しが必要です。 、jQuery遅延チェーニングの問題
showStandbyDialog();
$.when(function(){console.log('Paying Charges due before transaction');})
.always(this.applyCredit(parseFloat($(this.currentChargesTarget).html()))) // Pay charges due before transaction
.always(function(){console.log('Applying renewals');})
.always(this.applyRenewals()) // Apply Renewals
.always(function(){console.log('Paying renewal charges');})
.always(this.applyCredit(this.renewCart.length * this.renewCost)) // Pay renewal charges
.always(function(){console.log('Applying checkouts');})
.always(this.applyCheckOut()) // Apply checkouts
.always(function(){console.log('Paying checkout charges');})
.always(this.applyCredit(this.cart.length * this.checkOutCost)) // Pay checkout charges
.always(function(){console.log('Applying card replacement');})
.always(this.applyCardReplacement()) // Apply card replacement
.always(function(){console.log('Paying leftover charges');})
.always(this.applyCredit(this.cardCost)) // Pay leftover charges
.always(function(){console.log('Finalizing Transaction');})
.always(function(){ updateCharges(); bfwd.Patron.Transaction.reset(); hideStandbyDialog(); }); // Reset Transaction and clear standby dialog
は、今私は、の.doneを試してみました.then、そしてちょうど.anythingについて()が、ハンドルの機能ではconsole.log()コード:私は、トランザクションを確定するには、次のコードを使用していますthis.applyCredit()は常にconsole.log( 'トランザクションの終了')の後にログを記録します。あなたが不思議に思っていた場合に備えて、すべてのthis.function()コールはjqueryの遅延メソッドを返します。
私は完全にここに私のjsFiddleリメイク
これらの関数のいずれかが非同期呼び出しと呼ばれていますか?そうでない場合は、延期を使用する理由はありません。ストレートプロシージャプログラミングで適切なシーケンスでこれらの他の関数をすべて呼び出す関数を作成するだけです。それらが非同期の場合は、コードを表示して、遅延APIを適切に使用しているかどうかを評価することができます。 – jfriend00
彼はそれが一連のアヤックスコールだったと言っていたので、私はちょうど... –
申し訳ありませんが、これらのコメントに気付かなかった。私はコードを投稿することは害ではないと思う。ちょっと待って。 – LordZardeck