【发布时间】:2019-10-23 12:50:47
【问题描述】:
在这个函数中,我试图运行 2 个不同的 ajax 请求(3 个选项,根据 if 语句只有 2 个会运行)。 addDep() 和 addCust() 函数都包含一个 ajax 请求并被发送一个 url。但是,我需要该 ajax 函数在运行后调用 .then 函数中的代码之前运行和完成。现在代码运行但具有空值,因为它没有从 ajax 函数返回 data1 或 data2。我该如何解决这个问题?
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);
});
}
【问题讨论】:
标签: javascript ajax asynchronous promise