У меня есть функция «example», которая запускает forloop, и внутри цикла я вызываю «setTImeOut», в котором «callback» является анонимной функцией, которая выполняет некоторые операции и, наконец, возвращает некоторое значение. Я вызываю функцию «example» внутри функции «callTheAboveFunction» и назначаю ее переменной, внутри этой функции я вызываю «example1» и «example2», которые предназначены для использования возвращаемого значения функции «example».
Итак, я знаю, как работают цикл и замыкание, поэтому цикл выполняется первым, и поскольку «setTimeout» асинхронный, функция «example» возвращает, не входя в анонимную функцию в «setTimeout», которая позволяет«example1» и «example2» продолжаются, и после их выполнения функция «callTheAboveFunction» возвращается к обратному вызову «setTimeOut» и начинает выполнение кода внутри.
Итак, мой вопрос:Как я могу выполнить функцию «example» синхронно, чтобы была выполнена анонимная функция внутри «setTimeOut», а затем возвращено значение с новым номером, и после этого я могу использовать это возвращенное значение, чтобы начать выполнение «example1» и «example2»"функции. В этом коде я не планирую использовать «await» или «обещания», потому что функциональность программы синхронна.
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();
};