我正在尝试将一系列AJAX请求写入字典中。 我尝试使用promise来实现,但是我可能要么错误地编写了promise语法,要么我认为可能发生的情况是函数已经完成(for循环已完成,并发送了AJAX请求),但是AJAX请求仍未返回。 因此,这仍然返回一个空字典。
let dict = {};
let activeMachines = ["41", "42", "43"];
let dataPromise = new Promise (function (resolve, reject)
{
for (let i = 0; i < activeMachines.length; i++)
{
let machineID = activeMachines[i]
let getAPIData = new XMLHttpRequest();
let url = 'http://127.0.0.1:8000/processes/apidata/' +machineID + '/';
getAPIData.open('GET', url);
getAPIData.send();
getAPIData.onload = function()
{
let APIData = JSON.parse(getAPIData.responseText);
dict['machine_' + machineID] = APIData[0].author_id;
dict['temp' + machineID] = APIData[0].tempData; //get value
dict['humid' + machineID] = APIData[0].humidData;
timeValue = String((APIData[0].dateTime));
dict['time' + machineID] = new Date(timeValue);
console.log("done");
}
}
resolve();
});
dataPromise.then(function() {console.log(dict);});
有没有一种方法可以“感知”所有XMLHTTPRequests何时返回?
Promise.all([])
。 - pmkro