我刚刚在C#中构建了一个C解释器,现在开始将它转换为Javascript.一切都很顺利,直到我意识到js没有睡眠功能.我的解释器使用递归解析器,它暂停用户输入,同时它嵌套了几个深层函数(在C#中我在第二个线程中使用了waithandle).我查看了setInterval和setTimeout,但它们是异步/非阻塞的; 当然,busywait是不可能的,我查看了我在SO上找到的timed_queue实现,但没有运气.我在主窗口和webworker中都尝试过解析器.我正在使用jQuery.我对js的经验有限,我正在寻找想法.我对继续传递风格或收益率知之甚少,我想知道他们是否可能持有关键.这里有一些从代码中删除来显示一些控件脚本.任何想法请...
var STATE = {
START: "START",
RUN: "RUN", //take continuous steps at waitTime delay
STEP: "STEP", //take 1 step
PAUSE: "PAUSE",//wait for next step command
STOP: "STOP",
ERROR: "ERROR"
}
var state = state.STOP;
function parsing_process() //long process we may want to pause or wait in
{
while(token !== end_of_file)//
{
//do lots of stuff - much of it recursive
//the call to getNextToken will be encountered a lot in the recursion
getNextToken();
if (state === STATE.STOP)
break; …Run Code Online (Sandbox Code Playgroud)