私は jQuery.Deferred を使用して、、およびハンドラーを登録してdoneいfailますthen。
$.when( some_ajax(url) )
.done(function(result){})
.fail(function(){})
.then(function(){}); //just like that, with a single parameter
私のajax呼び出しが成功すると、この順序でコールバックが呼び出されることがわかりましdoneたthen。ただし、ajax が失敗すると、failコールバックが呼び出されますが、コールバックに到達しませんthen。
jQuery.Deferred のドキュメントを読みましたが、この動作の理由に関するヒントが見つかりませんでした。
alwaysの代わりに使用するとthen、成功と失敗の両方の場合に呼び出されます (最初にdone/failが呼び出され、次にalwaysが呼び出されます)。alwaysドキュメントは、私の説明したシナリオでとの間の予想される違いを示していないようですがthen、なぜそれらは異なる動作をするのですか?