У меня есть общая функция для получения некоторых текстовых данных, и она использует $ .ajax, чтобы попытаться получить эти данные из нескольких возможных мест.Эта функция содержит обещание, которое возвращается и используется в более позднем коде различными способами, в том числе помещает некоторые из этих результатов в массив и обрабатывает их с помощью Promise.all
.Кажется, все идет хорошо, за исключением того факта, что на некоторых элементах я получаю некоторые ошибки консоли красного разработчика - хотя я использую функцию .fail, которая предположительно должна отлавливать эти ошибки и предотвращать появление красного текста в консоли.
function getDataText(url, type, locationKey, dataName){
return new Promise((resolve, reject) => {
$.ajax({
url : url,
dataType : type,
timeout: 500
}).fail((err) => {
console.log(`getDataText(): REJECTED!\t${url}`);
reject(new Error(`Could not get '${url}' from location ${locationKey}`));
}).done((data) => {
console.log(`getDataText(): RESOLVED!\t${url}`);
resolve({ data : data, path : url });
});
});
}
Сначала он регистрирует красные ошибки, а затем на следующей строке появляется мое сообщение «ОТКАЗАНО».Чего я ожидаю, так это никакого красного текста, потому что я должен их ловить - мне кажется, моего «ОТКЛОНЕННОГО» сообщения должно быть достаточно.
Это нормально, или я что-то упустил?
Я также добавлю: этого не происходит для всех отбракованных предметов !Это происходит именно для этих двух:
- Файл, заблокированный политикой CORS, где URL - это локальный путь, начинающийся с «C: ...», который ожидается в том месте, для которого он находится в.
- Не найденная ошибка 404 для пути к файлу Mac, начинающегося с "/ Volumes /", когда к запросу ajax автоматически добавляется часть "http://localhost", потому что, когда я выполняю это на моемlocalhost, и он думает, что файл будет запускаться оттуда (это использовалось при тестировании простого локального HTML-файла, а не обслуживаемого).
Интересно, что отклоненные элементы, которые не имеют красной ошибки, обафайлы, которые были расположены на других компьютерах и начинались с «http://[network IP-адрес]». Мне интересно, если бы не что-то простое, что можно было бы сделать, чтобы помочь поймать эти первые два ...