Что я делаю
Я занимаюсь созданием графического приложения для черепах с помощью Blockly. Пользователь может создавать код из блоков, затем движок Blockly генерирует JS-код, который рисует на холсте.
В чем моя проблема
Движок Blockly генерирует JS-код, но возвращает его в виде строки, которую мне нужно eval()
нарисовать на холсте.
Я могу изменить код блоков, чтобы генерировать разные выходные данные, но важно сделать его как можно более простым, потому что пользователи могут прочитать фактический код, стоящий за вводом блока. Поэтому я хотел бы не испортить это.
Что я хотел бы сделать
У меня есть полный контроль над атомарными операциями (go
, turn
и т. д.), поэтому я хотел бы вставить в начало функций небольшой фрагмент кода, который задерживает выполнение остальных тел функций. Что-то вроде:
function go(dir, dist) {
// wait here a little
// do the drawing
}
Я думаю, что это должно быть что-то синхронное, сохраняющее задержку в потоке выполнения. Я пытался использовать setTimeout
(асинхронно, сбой), promise
(сбой), проверку временных меток в цикле (сбой).
Возможно ли это вообще в JS?
async/await
, вы можете написать код, который кажется синхронным, однако в конце концов он должен быть асинхронным. - person zzzzBov   schedule 22.08.2016