即使正在使用.fail,$。ajax也会记录红色错误

时间:2018-12-13 08:44:14

标签: ajax promise

我有一个获取某些文本数据的通用函数,它使用$ .ajax尝试从多个可能的位置获取此数据。该函数包含一个promise,该promise将被返回,并以各种方式用于以后的代码中,其中包括将这些结果中的几个推入数组并用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:...”开头的本地路径,该路径应位于该文件所在的位置。
  • Mac文件路径以“ / Volumes /”开头的404错误找不到错误,其中ajax请求自动添加“ http://localhost”部分,因为在本地主机上运行该文件时,认为该文件将从此处开始(在简单的本地HTML文件(而不是在提供服务的位置上进行测试时使用))。

有趣的是,没有红色错误的被拒绝的项目都是位于其他计算机上并以“ http://[network IP地址]”开头的文件。我想知道是否有什么简单的方法可以帮助捕获前两个...

0 个答案:

没有答案