I am trying to make one function running after another one, but and complete are running with my called function at the same time.
the console is printing out 2, 1, and supposed to be 1 is the first, how to make complete function waiting my fetchingFunction done to execute, please help
var loopControl = 0;
$('[data-toggle=tab]').on('show.bs.tab', function(e) {
if (loopControl == 0) {
e.preventDefault();
var ref = $(this).attr('href').replace('#', '');
loopControl = 1;
$.ajax({
url: fetchingFunction(),
success: function() {
},
complete: function() {
fakeFunction2();
$('.' + ref + '_tab').click();
}
});
} else {
loopControl = 0;
}
});
function fetchingFunction() {
setTimeout(function() {
console.log("1");
}, 2000);
}
function fakeFunction2() {
console.log("2")
}
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.1.0/bootstrap.min.js"></script>
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" rel="stylesheet" />
<ul class="nav nav-tabs">
<li><a class='aaa_tab' href="#aaa" data-toggle="tab">AAA</a></li>
<li><a class='bbb_tab' href="#bbb" data-toggle="tab">BBB</a></li>
<li><a class='ccc_tab' href="#ccc" data-toggle="tab">CCC</a></li>
</ul>
<div class="tab-content" id="tabs">
<div class="tab-pane" id="aaa">...Content1...</div>
<div class="tab-pane" id="bbb">...Content2...</div>
<div class="tab-pane" id="ccc">...Content3...</div>
</div>