Вы не можете, по крайней мере, в большинстве реализаций браузера. Вам придется заставить ваш компилятор обойти это. StratifiedJS делает что-то подобное.
Я добавлю еще несколько деталей. Это, очевидно, это не самый лучший способ реализации функции сна, но так как вы сказали, что вы делаете простой язык рисования, я просто идти с этим:
Представьте, что вы есть некоторый код, как это:
drawLine(1, 2, 3, 4);
sleep(1000);
drawLine(5, 6, 7, 8);
это может быть превращена в этот разбивая все sleep
S:
var pieces;
function advance() {
pieces.shift()();
}
pieces=[
function() {
drawLine(1, 2, 3, 4);
setTimeout(advance, 1000);
},
function() {
drawLine(5, 6, 7, 8);
}
];
advance();
Или, если ваш язык является более сложным, чем это, вы могли бы сделать это с большей сложностью для компилятора (это очевидное решение):
drawLine(1, 2, 3, 4);
setTimeout(function() {
drawLine(5, 6, 7, 8);
}, 1000);
Опять же, это может быть неприменимо, если ваш язык становится очень сложным, но может оказаться полезным в качестве отправной точки.
Реально, вы имеете в виду? Что вы проектируете? –
Зачем вам нужно спать() при компиляции кода? – Metal
Это плохая идея, если вы планируете запускать этот код в браузере, и ваша цель - не замораживать пользовательский интерфейс. – ide