Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:循环2个异步函数_Javascript_Loops_Asynchronous - Fatal编程技术网

Javascript:循环2个异步函数

Javascript:循环2个异步函数,javascript,loops,asynchronous,Javascript,Loops,Asynchronous,我有两个异步函数,它们需要来回交替,直到一个变量(在函数内部激活)调用它们停止。我尝试了while循环,但是由于playerTurn函数中的延迟,循环将永远运行并溢出程序 var loopStatus=1 playerTurn(作者,“R”,异步函数(){ playerTurn(对手、idTurn、异步函数(){ playerTurn(作者,“R”,异步函数(){ ... }) }) }) 为什么不使用Promise.race在这种情况下很有用 一个例子 const first = new Pr

我有两个异步函数,它们需要来回交替,直到一个变量(在函数内部激活)调用它们停止。我尝试了while循环,但是由于
playerTurn
函数中的延迟,循环将永远运行并溢出程序

var loopStatus=1
playerTurn(作者,“R”,异步函数(){
playerTurn(对手、idTurn、异步函数(){
playerTurn(作者,“R”,异步函数(){
...
})
})
})

为什么不使用
Promise.race
在这种情况下很有用

一个例子

const first = new Promise(function(resolve, reject) {
    setTimeout(resolve, 500, 'one');
});

const second = new Promise(function(resolve, reject) {
    setTimeout(resolve, 100, 'two');
});

Promise.race([first, second]).then(function(value) {
  console.log(value);
  // Both resolve, but second is faster
});

这种代码模式毫无意义。。。为什么所有回调函数都是异步的?你是在处理那些代码中的承诺吗