Существует 2 способа контролировать код последовательности.Во-первых, понимая, что вы работаете с асинхронной функцией, вы можете поместить последовательность кода в обратный вызов успеха.
HTML
<script>
$(document).ready(function(){
$('#btn').click(function() {
console.log('1');
callAjaxfunc(function() {
console.log('7');
});
});
});
</script>
<button id="btn">Call Ajax!</button>
<div id="log"></div>
<div id="info"></div>
JS
function callAjaxfunc(callback) {
console.log('2');
callingAjaxfunc(function() {
console.log('5');
console.log('6');
callback();
});
}
function callingAjaxfunc(callback) {
console.log('3');
$.ajax({
url: 'https://api.joind.in/v2.1/talks/10889',
data: {
format: 'json'
},
error: function() {
$('#info').html('<p>An error has occurred</p>');
},
dataType: 'jsonp',
success: function(data) {
var $title = $('<h1>').text(data.talks[0].talk_title);
var $description =
$('<p>').text(data.talks[0].talk_description);
console.log('4');
callback();
$('#info')
.append($title)
.append($description);
},
type: 'GET'
});
}
Я просто разместил ваш код в последовательности, но это не очень хорошая практика.Так что не делай этого.Вы должны понимать, что работаете с асинхронным кодом, поэтому лучше принять асинхронный способ.
Я призываю вас узнать больше об обещаниях (асинхронных / ожидающих) или генераторах.Это может быть хорошим способом улучшить рекомендации по асинхронному коду.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise https://jakearchibald.com/2017/async-iterators-and-generators/