Я борюсь с ошибками в моем вызове XHR Put, обернутом Обещанием, поскольку сначала он разрешается с 200, а затем с ошибкой 403 (запрещено) в xhr.onreadystatechange ..
(не знаю, почему сначала возвращается 200, должно было быть только 403) ..
Кто-нибудь из вас знает, как я могу исправить ошибки в этом сценарии?
Вызов XHR
export async function uploadFile(url, file, progressCallback) {
await promiseMinDelay(
new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest();
xhr.onreadystatechange = () => {
if (xhr.readyState === XMLHttpRequest.DONE) {
if (xhr.status === 200) {
return resolve(true);
}
console.log(`FAILED in OnReadyStateChange with : ${xhr.status}`);
const error = new Error();
error.status = xhr.status;
error.response = xhr.response;
// throw error;
reject(error);
}
};
xhr.upload.onprogress = (evt) => {
if (evt.lengthComputable) {
const percentComplete = parseInt(
(evt.loaded / evt.total) * 100,
10
);
progressCallback(file, percentComplete);
}
};
xhr.upload.onerror = function () {
console.log('Never reaching this point...');
const error = new Error('Something failed during upload. Please try again...');
reject(error);
};
xhr.open('PUT', url, true);
xhr.send(file);
}),
2000
);
}
Печатные экраны сетевых вызовов:
первый вызов, который возвращает 200:
второй вызов, который возвращает 403 (никогда не улавливая ошибку).