Javascript 如何在while循环中处理交替异步函数?

Javascript 如何在while循环中处理交替异步函数?,javascript,asynchronous,recursion,callback,Javascript,Asynchronous,Recursion,Callback,我刚开始在web环境中使用JavaScript,我还不能完全理解回调函数,但我认为在我当前的场景中,我需要一个(或多个?) 我有两个函数需要以交替顺序反复运行,直到满足某个条件(条件本身取决于函数2以某种方式更改全局变量,不确定是否相关) 所以最初我试过这个: while(condition !== true) { function1(); function2(); } 但是,这不起作用,因为这两个(!)函数都使用setInterval函数来处理每个动画,因此while循环执行所有操作

我刚开始在web环境中使用JavaScript,我还不能完全理解回调函数,但我认为在我当前的场景中,我需要一个(或多个?)

我有两个函数需要以交替顺序反复运行,直到满足某个条件(条件本身取决于函数2以某种方式更改全局变量,不确定是否相关)

所以最初我试过这个:

while(condition !== true) {
  function1();
  function2();
}
但是,这不起作用,因为这两个(!)函数都使用
setInterval
函数来处理每个动画,因此while循环执行所有操作的速度都太快,并且不会等待函数完成。现在我了解到,假设我需要在函数中使用回调函数。然而,由于
function2()
需要等待
function1()
并且
function1()
需要等待
function2()
之后,我不太明白如何在这里使用回调,因为我认为这需要某种无限回调链

如果这有助于使用伪代码,那么此时整个设置看起来是这样的(假设它等待一个全局变量达到某个索引):

var myGlobalCounter=0;
而(myGlobalCounter<8){
doSomeStuff(400);
doSomeMoreStuff(400);
}
函数doSomeStuff(targetCount){
//第一个需要setInterval的函数
var localCount=0;
myInterval=setInterval(函数(){
if(localCount!==targetCount){
计数+=1;
//这里发生的动画
}否则{
clearInterval(myInterval);
}
},20);
}
函数doSomeOtherStuff(targetCount){
//第二个函数,需要setInterval并更改全局计数器
var localCount=0;
myInterval=setInterval(函数(){
if(localCount!==targetCount){
localCount+=1;
//另一个动画发生在这里
myGlobalCounter+=1;
}否则{
clearInterval(myInterval);
}
},20);
}

如何修复此设置?请记住,我是一个非常初学者,我想要一个纯JavaScript的解决方案,因为到目前为止,我在项目的其余部分都避免了使用jQuery,并且对在while循环中使用回调的底层逻辑感兴趣。

根据一个条件交替使用两个函数。您可以将条件和函数传递给每个函数其他的

function function1(condition, otherFunction) {
    // code
    if(!condition) otherFunction(condition, function1);
}

function function2(condition, otherFunction) {
    // code
    if(!condition) otherFunction(condition, function2);
}

谢谢,这个很好用。比我考虑的那些奇怪的解决方案简单多了!
function function1(condition, otherFunction) {
    // code
    if(!condition) otherFunction(condition, function1);
}

function function2(condition, otherFunction) {
    // code
    if(!condition) otherFunction(condition, function2);
}