Я делаю вызов к API, а затем пытаюсь сделать диаграмму возвращаемых данных:Promise отвергаются преждевременно несколько раз, прежде чем разрешения
function getFromAPI(url) {
return new Promise((resolve, reject) => {
let xhr = new XMLHttpRequest();
xhr.onreadystatechange =() => {
if (xhr.readyState == 4 && xhr.status == 200) {
console.log("Resolving!");
jsonData = JSON.parse(xhr.responseText);
resolve(jsonData);
} else {
console.log("Rejecting!");
reject();
}
}
xhr.open("GET", url, true);
xhr.send();
});
}
getFromAPI(API_URL).then((jsonData) => { drawChart(jsonData) });
Когда я загружаю этот сценарий я Rejecting!
три раза консоль до ее разрешения. reject
не нарушая также .then
части (т.е. нет графика для меня!)
Я принимайте это onreadstatechange
события стреляет несколько раз, прежде чем мы доберемся до readyState == 4
и status == 200
. Что именно происходит, и как я могу избежать преждевременного отказа от обещания?
Поскольку есть readyState-х 1, 2 и 3 –