是否可以通过javascript中递归函数之外的操作退出该函数?

是否可以通过javascript中递归函数之外的操作退出该函数?,javascript,function,exit,Javascript,Function,Exit,我有一个脚本(在下面的示例中简化),其中用户操作启动递归函数 当已经启动的操作尚未完成运行时,用户可以启动新操作 但我想确保任何新操作都会停止所有以前的操作 目前实际发生的情况(您可以在下面的示例中看到)是,无论用户启动了多少个新操作,以前启动的每个操作都会继续,直到完成为止 我想知道(在下面的例子中)当前一个列表只增加了5个项目时,是否可以开始增加一个新列表,并确保前一个列表不再增加 var trigger=document.getElementsByTagName('p')[0]; Var

我有一个脚本(在下面的示例中简化),其中用户操作启动递归函数

当已经启动的操作尚未完成运行时,用户可以启动新操作

但我想确保任何新操作都会停止所有以前的操作

目前实际发生的情况(您可以在下面的示例中看到)是,无论用户启动了多少个新操作,以前启动的每个操作都会继续,直到完成为止

我想知道(在下面的例子中)当前一个列表只增加了5个项目时,是否可以开始增加一个新列表,并确保前一个列表不再增加

var trigger=document.getElementsByTagName('p')[0];
VarO=0;
函数addListItems(orderedList,listItemNumber){
var listItems=orderedList.getElementsByTagName('li');
如果(listItemNumber>9){
回来
}
listItems[listItemNumber].classList.add('show');
listItemNumber++;
setTimeout(函数(){addListItems(orderedList,listItemNumber)},400);
}
函数startRecursiveFunction(){
var orderedList=document.getElementsByTagName('ol')[o];
var listItemNumber=0;
if(o<7){
addListItems(orderedList,listItemNumber);
}
o++;
}
trigger.addEventListener('click',startRecursiveFunction,false)
p{
字体大小:粗体;
光标:指针;
}
ol{
显示:内联块;
}
李{
不透明度:0;
}
李秀{
不透明度:1;
}
点击触发功能(最多7次)

  • 一,
  • 二,
  • 三,
  • 四,
  • 五,
  • 六,
  • 七,
  • 八,
  • 九,
  • 十,
  • 一,
  • 二,
  • 三,
  • 四,
  • 五,
  • 六,
  • 七,
  • 八,
  • 九,
  • 十,
  • 一,
  • 二,
  • 三,
  • 四,
  • 五,
  • 六,
  • 七,
  • 八,
  • 九,
  • 十,
  • 一,
  • 二,
  • 三,
  • 四,
  • 五,
  • 六,
  • 七,
  • 八,
  • 九,
  • 十,
  • 一,
  • 二,
  • 三,
  • 四,
  • 五,
  • 六,
  • 七,
  • 八,
  • 九,
  • 十,
  • 一,
  • 二,
  • 三,
  • 四,
  • 五,
  • 六,
  • 七,
  • 八,
  • 九,
  • 十,
  • 一,
  • 二,
  • 三,
  • 四,
  • 五,
  • 六,
  • 七,
  • 八,
  • 九,
  • 十,

  • 您可以使用计数器变量,每次调用
    startCursiveFunction
    时,计数器变量都会增加。在
    setTimeout
    回调中,检查计数器是否已更改,如果已更改,则停止递归

    var trigger=document.getElementsByTagName('p')[0];
    VarO=0;
    var-fnId=0;
    函数addListItems(orderedList,listItemNumber){
    var listItems=orderedList.getElementsByTagName('li');
    如果(listItemNumber>9){
    回来
    }
    listItems[listItemNumber].classList.add('show');
    listItemNumber++;
    var lastFnId=fnId;
    setTimeout(函数(){
    if(lastFnId==fnId){
    addListItems(orderedList,listItemNumber);
    }
    }, 400);
    }
    函数startRecursiveFunction(){
    var orderedList=document.getElementsByTagName('ol')[o];
    var listItemNumber=0;
    if(o<7){
    fnId++;
    addListItems(orderedList,listItemNumber);
    }
    o++;
    }
    trigger.addEventListener('click',startRecursiveFunction,false)
    
    p{
    字体大小:粗体;
    光标:指针;
    }
    ol{
    显示:内联块;
    }
    李{
    不透明度:0;
    }
    李秀{
    不透明度:1;
    }
    单击以触发函数

  • 一,
  • 二,
  • 三,
  • 四,
  • 五,
  • 六,
  • 七,
  • 八,
  • 九,
  • 十,
  • 一,
  • 二,
  • 三,
  • 四,
  • 五,
  • 六,
  • 七,
  • 八,
  • 九,
  • 十,
  • 一,
  • 二,
  • 三,
  • 四,
  • 五,
  • 六,
  • 七,
  • 八,
  • 九,
  • 十,
  • 一,
  • 二,
  • 三,
  • 四,
  • 五,
  • 六,
  • 七,
  • 八,
  • 九,
  • 十,
  • 一,
  • 二,
  • 三,
  • 四,
  • 五,
  • 六,
  • 七,
  • 八,
  • 九,
  • 十,
  • 一,
  • 二,
  • 三,
  • 四,
  • 五,
  • 六,
  • 七,
  • 八,
  • 九,
  • 十,
  • 一,
  • 二,
  • 三,
  • 四,
  • 五,
  • 六,
  • 七,
  • 八,
  • 九,
  • 十,

  • 您可以使用计数器变量,每次调用
    startCursiveFunction
    时,计数器变量都会增加。在
    setTimeout
    回调中,检查计数器是否已更改,如果已更改,则停止递归

    var trigger=document.getElementsByTagName('p')[0];
    VarO=0;
    var-fnId=0;
    函数addListItems(orderedList,listItemNumber){
    var listItems=orderedList.getElementsByTagName('li');
    如果(listItemNumber>9){
    回来
    }
    listItems[listItemNumber].classList.add('show');
    listItemNumber++;
    var lastFnId=fnId;
    setTimeout(函数(){
    if(lastFnId==fnId){
    addListItems(orderedList,listItemNumber);
    }
    }, 400);
    }
    函数startRecursiveFunction(){
    var orderedList=document.getElementsByTagName('ol')[o];
    var listItemNumber=0;
    if(o<7){
    fnId++;
    addListItems(orderedList,listItemNumber);
    }
    o++;
    }
    trigger.addEventListener('click',startRecursiveFunction,false)
    
    p{
    字体大小:粗体;
    光标:指针;
    }
    ol{
    显示:内联块;
    }
    李{
    不透明度:0;
    }
    李秀{
    不透明度:1;
    }
    单击以触发函数

  • 一,
  • 二,
  • 三,
  • 四,
  • 五,
  • 六,
  • 七,
  • 八,
  • 九,
  • 十,
  • 一,
  • 二,
  • 三,
  • 四,
  • 五,
  • 六,
  • 七,
  • 八,
  • 九,
  • 十,
  • 一,
  • 二,
  • 三,
  • 四,
  • 五,
  • 六,
  • 七,
  • 八,