Indesign и Extendscript: несколько функций, циклов и времени. Функция вызывается в цикле, а не в синхронизации - PullRequest
0 голосов
/ 16 мая 2019

Основная проблема в том, что функция в цикле не синхронизирована.Я не получаю правильное значение 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(), но не изпорядок.Как мне синхронизировать или убедиться, что время правильно?

...