Основная проблема в том, что функция в цикле не синхронизирована.Я не получаю правильное значение var myDimensions
, если не включаю alert () для замедления процесса.Я не уверен, что мне нужно использовать обратные вызовы.Я читаю о них и нахожу их запутанными, и я хочу избежать ада обратного вызова.Происходит то, что при запуске функции в цикле некоторые другие мои вызовы функций не синхронизированы. Я пишу этот JavaScript как Extendscript для Adobe InDesign, поэтому в Extendscript не входит современный JS.
Я обнаружил проблему с синхронизацией после добавления alert()
в функцию, чтобы вернуть значение для подтвержденияЯ получал правильные значения.Если я добавлю alert()
, это приведет к задержке, которая заставит код работать правильно.Когда я удаляю alert()
, это снова не удается.Я попытался упростить мой код для краткости ниже, вместо вставки полного файла строки 1500.
function calculateSomething(podValue){
return podValue + 1;
}
function doPodStuff(value){
return value;
}
function getDimensions(calculation){
return calculation * 2;
}
function pod(value, count){
var podStuff;
var calculation;
var myDimensions;
podStuff = doPodStuff(value);
calculation = calculateSomething(podStuff):
myDimensions = getDimensions(calculation);
/* this is where my timing is off and podStuff and calculation get out of sync,
I determined this after placing an alert(myDimensions) right here If I add the alert(),
the delay makes it work, when I remove alert() it fails again.
*/
return myDimensions;
}
function row(value, count){
var myPod;
for(var i = 0; i < count; i++){
myPod = pod(value, 2);
}
return myPod;
}
row('foobar', 4);
Моя цель - запустить функцию pod()
в цикле for()
, но не изпорядок.Как мне синхронизировать или убедиться, что время правильно?