我有一个函数“ example”,它运行一个forloop,在循环内我称“ setTImeOut”,其中“ callback”是一个匿名函数,它执行一些操作并最终返回一些值。我在函数“ callTheAboveFunction”内调用函数“ example”,并将其分配给变量,在此函数内,我将调用“ example1”和“ example2”,它们旨在使用“ example”函数的返回值。
因此,我知道循环和闭合的工作方式,因此首先执行循环,并且因为“ setTimeout”是异步的,因此“ example”函数返回时无需进入允许“ example1”的“ setTimeout”上的匿名函数和“ example2”继续运行,执行完这些后,函数“ callTheAboveFunction”将返回“ setTimeOut”的回调并开始在其中执行代码。
所以,我的问题是:如何同步执行“示例”函数,以便执行“ setTimeOut”内部的匿名函数,然后用新数字返回值,然后,我可以使用此返回值开始执行“ example1”和“ example2”功能。在此代码中,由于程序的功能是同步的,因此我不打算使用“ await”或“ promises”。
function example(maxNum) {
var someNumber = 15;
for (let index = 0; index < maxNum; index++) {
setTimeout(function() {
someNumber = 25 * index;
console.log("Hi " + index);
}, 5000 * index);
}
return someNumber;
}
function example1(someNumber) {
console.log(someNumber);
}
function example2(someNumber) {
console.log(someNumber * 2);
}
function callTheAboveFunction() {
var getTheNumber = example(10);
example1(getTheNumber);
example2(getTheNumber);
}
document.getElementById("restart").onclick = function() {
callTheAboveFunction();
};