В этой функции я пытаюсь запустить 2 разных ajax-запроса (3 варианта, только 2 будут выполняться в зависимости от операторов if). Функции addDep()
и addCust()
содержат запрос ajax и получают URL-адрес. Однако мне нужно, чтобы эта функция ajax запускалась и выполнялась до вызова кода в функции .then после ее запуска. Прямо сейчас код выполняется, но имеет нулевые значения, потому что он не получил data1 или data2 обратно из функции ajax. Как мне это исправить?
function builder(){
var beforeDate = dateConv(document.getElementById('Before').value);
var afterDate = dateConv(document.getElementById('After').value);
var url = "http://localhost:8181/GRAIN/grain_map?start="
url += afterDate;
url += "&end=";
url += beforeDate;
url += "&attributes=DATE-SHIPPED+DESTINATION-NAME+DESTINATION";
ajaxReq(url).then(function (jsonString) {
for (i=0; i < jsonString.grain_map.length; i++){
destinationArray.push(jsonString.grain_map[i].DESTINATION);
}
for (i = 0; i < destinationArray.length; i++){
if (destinationArray[i] == ""){
continue;
}
if (destinationArray[i].length == 3 || destinationArray[i].length == 2){
var destCode = destinationArray[i];
addDep(destCode).then(function (data1) {
var address = "";
var depArray = data1.dep_address[0].ADDRESS;
for(i = 0; i < depArray.length; i++){
address += data1.dep_address[0].ADDRESS[i] + " ";
}
addressArray.push(address);
}).catch(function (err) {
console.error(err);
});
}else if (destinationArray[i].length == 6){
var destCode = destinationArray[i];
addCust(destCode).then(function (data2) {
var address = "";
var depArray = data2.customer_address[0].ADDRESS;
for(i = 0; i < depArray.length; i++){
address += data2.customer_address[0].ADDRESS[i] + " ";
}
addressArray.push(address);
}).catch(function (err) {
console.error(err);
});
}
}
}).catch(function (err) {
console.error(err);
});
}