【发布时间】:2015-02-24 17:30:13
【问题描述】:
我正在为要在浏览器中运行的元语言编写解析器。元语言是阻塞的,但由于javascript的限制,需要在解释器中转换为非阻塞。
例如,元语言代码可能看起来像
1. dosomething(4)
2. dosomethingelse(1)
3. dosomething(7)
4. goto 2
在javascript中实现的功能为
function dosomething(n, callback) {
... // do something with n
setTimeout(callback, 1000);
}
function dosomethingelse(n, callback) {
... // do something else with n
setTimeout(callback, 1000);
}
如果没有goto 语句,这将很容易编译为javascript,然后编译为eval。但是,我不知道如何实现gotos。任何帮助表示赞赏。
【问题讨论】:
-
无条件跳转只是一个while循环
-
如何解释非阻塞语言中的阻塞 while 循环?
-
我不明白这个问题。
-
您是否要等待所有异步
dosomething调用完成然后执行 goto? -
我通常使用 Promise 来实现。喜欢github.com/kriskowal/q
标签: javascript interpreter metalanguage