Yes it is. Synchronous calls monopolize the event loop so everything - including page interactions - freeze until the control flow finishes busy-waiting. Yay, single threading.
function main(entrypoint) {
switch (entrypoint) {
default:
case 0:
// do some (...)
// now drop the thread and wait for input (external)
myInputFunc(function(result) { main(1, result); });
break;
case 1:
// return to here from input
var value = arguments[1];
// now do something with it ...
break;
}
}
function myInputFunc(callback) {
// in actuality this might be servicing a more complex UI
document.querySelector('#inputField').oninput =
function() { callback(this.value); };
}(Maybe requesting additional server data by what would be called padded JSON nowadays via a hidden frame, because no AJAX. And, maybe, we would have rather used global vars for control than anonymous functions, but this another story.)
:-)
Also, why not? Do you see any problem with that? As long as their numbers are limited, I don't see any problem?