bridgetalk. дождаться выполнения вызванного

  • Автор темы Автор темы shornikov
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

shornikov

Участник
Топикстартер
Сообщения
61
Реакции
0
Добрый день.
Имеем следующую неприятность: файл переданный для обработки в фотошоп не успевает сохраниться, до того момента как ID собирается его обновить.
...
var bt = new BridgeTalk;
bt.send();
}

myImage.itemLink.update();

Подозреваю, что надо по-другому, пытался читать мануал по бриджу, но не понял :(.

Как дождаться выполнения фотошоп-части скрипта и только потом продолжить Индизайн-кусок?
 
Ответ: bridgetalk. дождаться выполнения вызванного

Что-то типа:
Код:
while( bt.completed == false ) {
        bt.pump();
        $.sleep( 100 );
}
 
Ответ: bridgetalk. дождаться выполнения вызванного

Судя по всему Вас не интрересует асинхронное взаимодействие двух задач, которые обмениваются непредвиденными сообщениями. Как следствие - Вам не стоит углубляться в настройку статических функций BridgeTalk.onReceive скриптов PS и ID. Поскольку одна задача должна дождаться завершения выполнения другой, т.е. выполняться они должны синхронно, организовать это можно гораздо проще. Первая задача работающая в ID собирает все данные для задачи в PS и завершается запуском последней. Задача в PS обрабатывает все полученные данные, формирует результат и завершается запуском второй задачи ID, которая и отображает эти результаты. Думаю, что это простейший вариант для тех, кто не хочет разбираться с деталями BridgeTalk. А организация всевозможных задржек и т.п. на мой взгляд не очень корректна, потому как размеры файлов бывают очень разные и хватит ли конкретного числа 100 или любого другого для завершения операций ввода вывода в операционной системе с вытестняющей многозадачностью - вопрос сложный. Если уж и ждать результата, то при помощи onReceive.

AirGraph.
 
  • Спасибо
Реакции: dumbm1
Ответ: bridgetalk. дождаться выполнения вызванного

а как запустить из одного приложения другое?
вернее переключиться на другую объектную модель?

если например, из индизайна запускаю иллюстратор (doScript(ill_script.jsx)), то сколько в иллюстраторовском скрипте #target='illustrator' не пиши, индизайн игнорирует ее и соответственно объектная модель не меняется

как быть?
 
Ответ: bridgetalk. дождаться выполнения вызванного

Так ты же в другой ветке все правильно написал... В .target поставил приложение (Illustrator), в .body - текст скрипта, работающего в Illustrator, ну и далее .send. Я правда обычно еще определяю .onError, полезно для процесса отладки. Идея проста. Скрипт ID после .send попросту завершается. Стартует IL и выполняет скрипт присланный ему в .body, который в свою очередь завершается точно таким же вызовом ID через BridgeTalk со скриптом ID в .body. Все входные/выходные данные скриптов хранятся в заранее известных им файлах. Вот и вся недолга. ;-)

На мой взгляд это значительно проще, чем настраивать по events .onReceive, распознавать кучу ненужных тебе событий, на 99% которых ты никак не должен реагировать. Все это, собственно, следует из той простой мысли, что пара приложений должна работать синхронно, потому как пока одно не соберет данные для другого, тому делать просто нечего. ;-)

AirGraph.
 
  • Спасибо
Реакции: dumbm1
Статус
Закрыто для дальнейших ответов.