Javascript 正在额外运行Ajax请求

Javascript 正在额外运行Ajax请求,javascript,jquery,ajax,Javascript,Jquery,Ajax,我在Javascript(jQuery)中遇到了一个问题,我的Ajax GET请求需要额外运行一段时间。事实上,即使我将它包装在if(false){//AJAX请求}中,它也在运行 为什么要额外运行一段时间,为什么即使在错误的if语句中也要运行呢 额外注释 我的实际场景是,我正在运行一个递归函数,该函数为每次迭代发出GET请求,直到集合堆栈为空为止。在每一次测试中,该函数都发挥了神奇的作用,但在浏览器的控制台中,当它试图用空数据额外运行Ajax请求时,我得到了404 示例屏幕截图: Psheud

我在Javascript(jQuery)中遇到了一个问题,我的Ajax GET请求需要额外运行一段时间。事实上,即使我将它包装在
if(false){//AJAX请求}
中,它也在运行

为什么要额外运行一段时间,为什么即使在错误的if语句中也要运行呢

额外注释

我的实际场景是,我正在运行一个递归函数,该函数为每次迭代发出GET请求,直到集合堆栈为空为止。在每一次测试中,该函数都发挥了神奇的作用,但在浏览器的控制台中,当它试图用空数据额外运行Ajax请求时,我得到了404

示例屏幕截图:

Psheudo代码

function iterate(stack, success_function){

    if stack is empty
        success_function();
        return;

    //preserve original stack when popping
    new_stack = stack.slice(0);

    my_var = new_stack.pop();

    if (typeof my_var == "number"){

    $.ajax({
      dataType: 'json',
      url: "https://mywebsite/" + my_var + "?permanent_url=" + permanent_domain + "&access_all=true",
      success: function(data){
            work with data
            iterate(new_stack, success_function);
      }

    });

    }

}
谢谢你的帮助。多谢各位

控制台错误:

更新

为了将这一点纳入预期,以下是我最初打电话的方式:

function someFunction(){

    interate(initial_stack, function(){
        console.log('finished working with data');
    });

}
如果我将此更改为:

function someFunction(){

    console.log('about to process');
    interate(initial_stack, function(){
        console.log('finished working with data');
    });

}
“即将处理”只在控制台中记录一次

页面上的另一个(远程)脚本发出了与我类似的Ajax请求,但失败了。我自己的代码工作正常,而另一个脚本导致了控制台错误


伙计们,这里没问题

“psheudo”代码的问题是,您得到了“psheudo”答案,可能是您附加了两次偶数处理程序?我更新了代码,使其伪代码更少@克劳迪奥雷迪本人也证实了事实并非如此。递归函数初始化一次。另外,这里的关键点是,我可以在if(false){//ajax request}中包装这一切,并且ajax请求仍然通过并使用null url参数失败。另一个更新:FIXED发现页面上的另一个(远程)脚本发出了与我类似的请求,并且失败了。当我的代码工作正常时,这个控制台错误来自其他地方/计划生育