I have global variable var distances = []. I have function to fill it but it takes some time. And I want to send it to Django view when it's filled. However due to JS asynchronous work I alway send empty array. How can I send filled array without setting timeout? My js code is
var distances = [] //array where some digits will be stored
function getAllDistances() //function where this digits being put in distances arr
//note that every digit is result of request to API of routing service so it takes 
//some time to get thing done
function ajaxTest(){//function for sending array to Django view
    $.ajax({
        url:'test/',
        type:'POST',
        data:JSON.stringify({distances : distances}),
        dataType: 'json',
        success:function (data) {
            console.log("Ajax test success");
            console.log(data.result.text);//view should return some result
        },
        error:function () {
            console.log("Ajax test failure")
        }
    })
}
function doTheJob(){ //main function 
    getAllDistances();
    ajaxTest();
}
So everything is ok with request but it always sends empty array. Is it possible to make js send filled array without setting timeout? I guess callback will do thing here but correct me if I wrong
To make it more clear I'll add function that gets me distances
function getRoutSummary(i, j, q) {
                    var url = 'https://router.project-osrm.org/route/v1/driving/' +
                            coords[i][1] + ',' + coords[i][0] + ';' +
                            coords[j][1] + ',' + coords[j][0] +
                            '?geometries=geojson';
//coord is array of arrays with coordinates like
//[[lat1, long1], [lat2, long2], [lat3, long3]] where lat is latitude and long 
//is longtitude
                    var req = new XMLHttpRequest();    
                    req.responseType = 'json';    
                    req.open('GET', url, true);    
                    req.onload = function () {
                        var jsonResponse = req.response;
                        var distance = jsonResponse.routes[0].distance;
                        distances[q] = distance;
                    };
                    req.send();
            }
And then I call this function in loop
function getAllDistances(){
                var q = 0;
                for (var i = 0; i < coords.length; i++){
                    for (var j = 0; j < coords.length; j++){
                        getRoutSummary(i, j, q);
                        q = q + 1;
                    }
                }
                console.log(distances);
            }
 
    