Ориентация назначения, асинхронная или синхронная

Эта управляющая структура добавляет к языку Script целевую ориентацию, запускает процедуру, которая выполняется асинхронно.

Она работает с глобальными переменными или объектами. Синтаксис выглядит следующим образом:

to ...condition... for durée [, délai ]
  ...processus...
/to

Компилятор также распознает однострочный синтаксис:

to ...condition... for ...durée [, délai]. do ...action... 

Условие

Условие - это реляционное выражение, которое определяет цель, которую нужно достичь. На пример:

a >= 100

Действие выполняется повторяющимся образом, пока значение глобальной переменной не составит 100.

Срок

Продолжительность - это предельное время, выраженное фактическим числом в секундах, в течение которого выполняется обработка. Это может быть целое или фактическое число, но всегда буквенное .
Если вы не хотите ограниченного времени, вы пишете символ &, чтобы представить бесконечность .

Срок

Этот параметр является опционным. Он устанавливает время ожидания, выраженное целым числом в миллисекундах между двумя итерациями действия. По умолчанию времени нет.

Действие

Действие - это блок инструкций, определенный для попытки достижения цели, блок выполняется повторяющимся образом, как в итерации (но это не одна, мы находимся в асинхронном режиме).

Также можно попытаться максимально повысить ценность. В этом случае при достижении предельного времени заканчивается с ближайшим значением данной цели.

Все это работает асинхронно: Если в одной программе определить несколько целей, действия срабатывают одновременно, поэтому она должна работать на независимых переменных.

Это действительно не конкуренция, даже если она на нее похожа. Созданный код JavaScript основан на функциях setInterval и setTimeout. Эта управляющая структура подходит для моделирования и управления роботом, чтобы управлять элементами или частями и заставить их двигаться к цели, независимо друг от друга.

Эксобширные

Пример простого кода:

int ai = 50
int bi = 5

to ai >= 100 for &
   ai = ai + bi
   int ai
/to 

Пример однострочного кода:

int ci = 100

int addit()
   ci + bi
return ci

to ci >= 1000 for 0.9 do print addit()

Если эти два примера будут помещены в одну программу, они будут выполняться одновременно, а их промежуточные результаты будут отображаться поочередно.

Если ваш код работает локально с Node.js, можно также использовать библиотеки process и child_process, которые предоставляют аналогичные возможности.

Вот код JavaScript из библио скриптол.js, который позволяет целевую ориентацию:

exports.goal = function(condi, dur, actio) { 
var iter = setInterval(function() {
if(condi()) {
clearInterval(iter);
clearTimeout(limiter);
return;
}
actio();
}, 0);
if(dur == "&") dur = 2147483647;
var limiter=setTimeout(function() { clearInterval(iter); }, dur);
}

Эта функция вызывается с двумя функциями в качестве аргументов, плюс длительность. Для получения дополнительной информации посмотрите код, созданный компилятором.

Синхронный режим

Для синхронной работы, то есть для того, чтобы выполнение целей осуществлялось один за другим, синтаксис выглядит следующим образом:

to ...condition... while ...durée...
  ...processus...
/to

На одной строке:

to ...condition... while ...durée... do ...action... 

Слово while заменило слово for.

Вот код JavaScript для синхронного режима:

exports.goalSync=function(condi, dur, actio) { 
var stopFlag = false;
if(dur == "&") dur = 2147483647;
var limiter=setTimeout(function() { stopFlag = true; }, dur);
while(stopFlag == false) {
if(condi()) {
clearTimeout(limiter); stopFlag=true;
return;
}
actio();
}
}

Использование более общее, чем асинхронный режим, эта управляющая структура может использоваться при любой обработке.

Примеры программ SVG, ориентированных на .fr.