⭕⭕が終わったら…、❌❌が終わったら…、を入れ子の中に入れていくとインデントが深くなってしまい見づらくなり、保守が困難になってきます。
そんなとき、ワタシはこんな感じで書くようにしています。
	$.when(function(){
        $(".loading_modal").toggle(true);
		//dfd.resolve(); // 成功(続行)
		//dfd.reject(); // 失敗(中断)
		return;
	})
	.then(function(){
        var dfd = new $.Deferred;
        var ret = 処理A();
        if (ret) {
            dfd.resolve();
        } else {
            dfd.reject();
        }
		return dfd.promise();
	})
	.then(function(){
        var dfd = new $.Deferred;
        var ret = 処理B();
        if (ret) {
            dfd.resolve();
        } else {
            dfd.reject();
        }
		return dfd.promise();
	})
	.then(function(){
        var dfd = new $.Deferred;
        var ret = 処理C();
        if (ret) {
            dfd.resolve();
        } else {
            dfd.reject();
        }
		return dfd.promise();
	})
	.always(function(){
        // ファイナル処理
		$(".loading_modal").toggle(false);
	})
	;
参考としたURL
JavaScriptとコールバック地獄
https://techblog.yahoo.co.jp/programming/js_callback/