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