diff --git a/static/focus.js b/static/focus.js index 4b43735..b503c96 100644 --- a/static/focus.js +++ b/static/focus.js @@ -5,37 +5,48 @@ const API = { buhForms: "/api3/buh", }; -function run() { - sendRequest(API.organizationList, (orgOgrns) => { - const ogrns = orgOgrns.join(","); - sendRequest(`${API.orgReqs}?ogrn=${ogrns}`, (requisites) => { - const orgsMap = reqsToMap(requisites); - sendRequest(`${API.analytics}?ogrn=${ogrns}`, (analytics) => { - addInOrgsMap(orgsMap, analytics, "analytics"); - sendRequest(`${API.buhForms}?ogrn=${ogrns}`, (buh) => { - addInOrgsMap(orgsMap, buh, "buhForms"); - render(orgsMap, orgOgrns); - }); - }); - }); +async function run() { + // эти данные всё же нужно подождать + const orgOgrns = await sendRequest(API.organizationList); + console.log(orgOgrns); + const ogrns = orgOgrns.join(","); + + // три promise + const requisites = sendRequest(`${API.orgReqs}?ogrn=${ogrns}`); + const analytics = sendRequest(`${API.analytics}?ogrn=${ogrns}`); + const buh = sendRequest(`${API.buhForms}?ogrn=${ogrns}`) + + // а это может выполняться параллельно + Promise.all([requisites, analytics, buh]).then(function(values) { + console.log(values[0]); //requisites + console.log(values[1]); //analytics + console.log(values[2]); //buh + const orgsMap = reqsToMap(values[0]); + addInOrgsMap(orgsMap, values[1], "analytics"); + addInOrgsMap(orgsMap, values[2], "buhForms"); + render(orgsMap, orgOgrns); }); } run(); -function sendRequest(url, callback) { - const xhr = new XMLHttpRequest(); - xhr.open("GET", url, true); - - xhr.onreadystatechange = function () { - if (xhr.readyState === XMLHttpRequest.DONE) { - if (xhr.status === 200) { - callback(JSON.parse(xhr.response)); - } - } - }; - - xhr.send(); +async function sendRequest(url) { + return fetch(url) + .then((response) => { + console.log(response); + if (response.ok) + return response.json(); + else + alert("Ошибка HTTP: " + response.status); + }); + + // return new Promise((resolve, reject) => { + // const xhr = new XMLHttpRequest(); + // xhr.open("GET", url); + // xhr.onload = () => resolve(JSON.parse(xhr.response)); + // xhr.onerror = () => reject(xhr.statusText); + // xhr.send(); + // }); } function reqsToMap(requisites) { @@ -131,4 +142,4 @@ function createAddress(address) { function createAddressItem(key) { return `${address[key].topoShortName}. ${address[key].topoValue}`; } -} +} \ No newline at end of file