Javascript 退出AJAX循环或在html页面列表中查找alt以进行比较

Javascript 退出AJAX循环或在html页面列表中查找alt以进行比较,javascript,jquery,ajax,Javascript,Jquery,Ajax,我需要将这个小脚本插入我的所有网站页面。 脚本必须包含该域的令牌集。 我有21个不同的域。 每个域都有一个HTML页面,其中列出了该域下的所有站点。 这不像ww.site.com/domain/path那么简单,不是所有的站点都在同一个“域名”下,而是在该“域”下 因此,我的想法是编写一个脚本,在页面加载时读取站点路径名,并将其与每个列表进行比较,直到找到匹配项。 查看我的{domain,tokens}数组,找到该域的正确标记,让函数用该标记编写脚本并将其插入页面 问题:在找到匹配项后,AJAX

我需要将这个小脚本插入我的所有网站页面。
脚本必须包含该域的令牌集。
我有21个不同的域。
每个域都有一个HTML页面,其中列出了该域下的所有站点。
这不像ww.site.com/domain/path那么简单,不是所有的站点都在同一个“域名”下,而是在该“域”下

因此,我的想法是编写一个脚本,在页面加载时读取站点路径名,并将其与每个列表进行比较,直到找到匹配项。
查看我的{domain,tokens}数组,找到该域的正确标记,让函数用该标记编写脚本并将其插入页面

问题:在找到匹配项后,AJAX不会退出搜索站点URL列表的循环,因此这对服务器来说是一个巨大的消耗。 我知道有几个stackoverflow问题与这个问题有关,我已经尝试了所有发布的解决方案。我真正的问题是,我怎么能不使用AJAX来读取和比较站点路径名呢

有没有更好的方法来解决这个问题?
*将21个不同的HTML页面与列出的每个站点一起使用的关键是,该列表会随着新的站点版本和频繁发生的删除站点而动态更新

我需要插入的脚本是分析跟踪代码

这方面的最新尝试(伪代码,因为我无法发布直接链接/信息)

let tokens=[{domain:“示例”,
url://example.html“,
令牌:“ExampleToken”
},
等
];
设指数=0;
jQuery(文档).ready(函数()
{     
loopyloop();//在0处开始索引
});
函数loopyloop()
{      
jQuery.ajax({
键入:“获取”,
ajaxToken:index,
url:tokens[index].url,
成功:功能(数据)
{             
findToken(数据);
},
错误:函数(){
console.log('fail');
}
});                    
}
函数findToken(数据)
{      
//数据是一个非常大的字符串格式,请使用replace查找与域匹配的数据
var urlRegex=/(https?:\/\/[^\s]+)/g;
data.replace(urlRegex,函数(url){
//将找到的URL与页面的路径名/URL进行比较
if(url.toLowerCase().indexOf(window.location.pathname.toLowerCase())>=0
{
创建_脚本(令牌[index]。令牌,令牌[index]。域);
返回false;
}
else if(索引+1
我会尝试将其转换为异步函数,这样您就可以使用
wait
执行适当的循环,并在准备好时中断它

可能与此类似的东西:

async function loopyLoop() {
  try {
    while(true) {
      let data = await axios.get(``);
      // some logic to extract token and compare it
      if (somethingsomething) {
        continue;
      } else if (somethingelse) {
        break;
      }
    }    
  } catch(e) {
    console.log('loop errored');
    console.log(e.toString());
  }
}

有什么方法可以简化这个问题吗?在我看来,只要
findToken
函数中出现
create\u script
路径,那么
loopyloop
就应该停止运行。事实并非如此?事实并非如此,因为AJAX即使在找到匹配项后仍保持运行,因此似乎不可能打破AJAX响应中的循环。我建议您使用console.log记录一些内容,包括
index+1
内部
loopyloop
并查看找到的
标记后该值的含义:
logI无法使用axios-CORS已禁用且无法启用。@hpgodwin我想您有点困惑,因为axios与jQuery.ajax没有什么不同,它们只是不同的API,在幕后使用相同的东西。但在任何情况下,如果不能使用axios,可以将jQuery.ajax调用转换为承诺。
async function loopyLoop() {
  try {
    while(true) {
      let data = await axios.get(``);
      // some logic to extract token and compare it
      if (somethingsomething) {
        continue;
      } else if (somethingelse) {
        break;
      }
    }    
  } catch(e) {
    console.log('loop errored');
    console.log(e.toString());
  }
}