Сделать синхронным в ajax javascript

В моем скрипте у меня есть вызов ajax к файлу php, и я хотел бы завершить вызов до выполнения остальной части скрипта ниже

Вот сценарий, на который я ссылаюсь:

function game_settings(state){
    if(state == "load"){
        ui.load_game();

        //do ajax call to load user last save
        var dataString = {"user_data": "true"};
        $.ajax({
           type:"POST",
            url:"PHP/class.ajax.php",
            data: dataString,
            dataType: 'JSON',
            success: function(success) {
                    player_details_init(success)
            },
            error: function(){
                alert("ERROR in User data");
            }
        });

        console.log (player_level);
        //scene.load("level_"+level);

        //instantiate a heroObject
        player = new Player(20,20,game_width, game_height);
        // set it's image to the proper src URL
        player.image.src = "images/Mage_Sprite.png";
        // once the image has completed loading, render it to the screen
        player.image.onload = function()
        {
            player.render();
        };

        lastUpdate = Date.now();
    }

Так, например, прямо сейчас, когда скрипт запускается, я вижу в консоли, что выполняется запрос ajax, а затем остальная часть скрипта исполняется до того, как завершится ajax, что приводит к следующему вызову:

console.log (player_level);

возвращать неопределенное значение, а не значение, которое должно быть, потому что ajax еще не завершен.

Чтобы уточнить мой вопрос:

Как мне завершить вызов ajax до того, как будет обработана остальная часть скрипта?

Спасибо

2 ответа

Решение

Вы можете поместить оставшуюся часть сценария в обратный вызов успеха вызова AJAX или установить async свойство config вызова AJAX в false, что сделает его синхронным.

Поместите "остальную часть сценария" в функцию обратного вызова success.

Другие вопросы по тегам