所以我试图运行两个都使用异步的重复功能。这两个功能在某些时候都使用了异步等待功能。问题是当一个功能使用等待时,它将暂停两个功能。我将如何阻止这种情况的发生,以便当一个函数使用await时另一个函数不会暂停。谢谢。下面的示例。
const collectInfo = async () => {
return new Promise(async function(resolve, reject) {
// Collect info from the database then
resolve(data);
});
}
const functionOne = async () => {
timeLeft = 5000;
var timerOne = setInterval(async function(){
if(timeLeft === 0){
var getInfTwo = await collectInfo();
console.log(getInfOne);
startFunctionOne();
clearInterval(timerOne);
}
timeLeft--;
}, 10);
}
const functioTwo = async () => {
timeLeft = 10000;
var timerTwo = setInterval(async function(){
if(timeLeft === 0){
var getInfOne = await collectInfo();
console.log(getInfOne);
startFunctionTwo();
clearInterval(timerTwo);
}
timeLeft--;
}, 10);
}
const startFunctionOne = async () => {
functionOne();
}
const startFunctioTwo = async () => {
functioTwo();
}
startFunctionOne();
startFunctioTwo();
答案 0 :(得分:0)
请小心,因为您没有为变量timeLeft使用关键字var或让functionOne和functionTwo进入,此变量将变为全局变量,因此您在两个函数中使用相同的全局变量。
如果您的两个功能在同一时间启动并等待输入/输出,则您无需选择何时“暂停”该功能,该功能会通过异步方式自动完成。
答案 1 :(得分:0)
您需要将这些语句分组到一个异步函数中。这样,我们得到了两个异步函数startFunctionOne()
和startFunctionTwo()
现在,我们利用事件循环来同时运行这些异步非阻塞函数。
const functionOnePromise = startFunctionOne()
const functionTwoPromise = startFunctionTwo()
await functionOnePromise
await functionTwoPromise
我们将语句分为两个功能。在函数内部,每条语句取决于前一条的执行。然后,我们同时执行函数startFunctionOne()
和startFunctionTwo()