синхронизировать функцию JavaScript

0

Как я могу синхронизировать свою функцию

$.getJSON(service_url + '?callback=?', params, function(response) {
    //console.log(response.result); 
    jsonGrpah = new Object();
    jsonGrpah.name = $("#label").val();
    jsonGrpah.children = new Array();
    for (var i = 0; i < response.result.album.length; i++)
    {
        jsonGrpah.children.push({"name": response.result.album[i]});
        jsonGrpah.children[i].children = new Array();
        var trackQuery = {"type": "/music/artist",
            "name": "The Police",
            "album": response.result.album[i],
            "track": []
        };
        var trackParams = {'key': API_KEY,
            'query': JSON.stringify(trackQuery)
        };
        $.getJSON(service_url + '?callback=?', trackParams, function(response) {
            for (var j = 0; j < response.result.track.length; j++)
            {
                jsonGrpah.children[i].children.push({"name": response.result.track[j]});
            }
        });
    }
    setGraph(jsonGrpah);
});

когда я запускаю его setGraph(jsonGrpah); функция запускается перед вторым json, есть способ сделать синхронизацию JavaScript?

  • 0
    не выполняйте запрос синхронизации ajax, это просто не цель ajax. Во всяком случае, jsonp не поддерживает запрос синхронизации
Теги:

1 ответ

2

Вы можете вызвать setGraph(jsonGrpah) когда все вызовы getJSON завершились следующим образом:

$.getJSON(service_url + '?callback=?', params, function(response) {
    ...

    var calls = [];

    for (var i = 0; i < response.result.album.length; i++)
    {
        ...

        calls.push($.getJSON(service_url + '?callback=?', trackParams, function(response) {
            ...
        }));

        $.when.apply($, calls).then(function() {
            setGraph(jsonGrpah);
        });
    }
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню