Emscripten: замена подсказки консолью (какой-то)

У меня есть (интерактивное, как оболочка python) консольное приложение C++, и я начал играть с Emscripten (для транскомпиляции из C++ в JS). Все хорошо, но я бы хотел, чтобы подсказка JS, отвлекающая внимание, была заменена чем-то менее... эксцентричным.

Что я пробовал: я добавил текстовое поле ввода и кнопку в сгенерированный html и заменил строку, вызывающую подсказку, циклом while (цикл, пока пользователь не нажмет кнопку). Это не очень хорошо сработало, пустой цикл заморозил браузер (что, вероятно, и ожидалось, но в JS нет функции сна).

Итак, вкратце, я хочу такой макет:

output textarea / output textarea / output textarea / output textarea
output textarea / output textarea / output textarea / output textarea
output textarea / output textarea / output textarea / output textarea
output textarea / output textarea / output textarea / output textarea

input textarea <ok button>

и поведение:

while (1)
  let program work until input requested
  wait for user to clik on the <ok button> above

Любой простой способ добиться этого, изменив (emcc) сгенерированный JS-код? (У меня есть идея, как добиться этого, изменив (мой) исходный код, но я хотел бы избежать этого, если это возможно)


person Luka Mikec    schedule 18.08.2013    source источник


Ответы (1)


Не совсем уверен, что вы на самом деле пытаетесь сделать.

Сначала прочтите документацию Emscripten об ограничениях браузера, хотя.

Вы можете использовать window.setTimeout, чтобы регистрировать обратный вызов каждые N миллисекунд и выполнять вывод текстового поля.

И если вы хотите «ждать» ввода пользователя, лучше всего передать управление основному циклу браузера и при нажатии кнопки вызвать обратный вызов, который возобновляет обработку (используя ввод текста).

person abergmeier    schedule 19.08.2013
comment
Я пытаюсь заменить приглашение JS (вызванное по моему запросу на чтение со стандартного ввода) комбинацией textarea + button. Я знаю о вашем решении, но было бы неплохо, если бы существовал какой-то интегрированный способ добиться этого. Спасибо, в любом случае! - person Luka Mikec; 20.08.2013
comment
Честно говоря, я думаю, что пользовательский опыт с формами сильно отличается от чтения с консоли. Поэтому я думаю понятно, почему это, вероятно, никогда не будет интегрировано. - person abergmeier; 20.08.2013
comment
Я согласен с тем, что то, что я хотел бы иметь, слишком специфично для интеграции в Em, но то, что можно было бы интегрировать, — это механизм замены приглашения чем-то более подходящим без значительных изменений структуры выходного кода. - person Luka Mikec; 20.08.2013