简单的问题,是否有描述代码或语言的定义/术语,其中代码主体被一遍又一遍地连续扫描,而不是仅在调用函数时。
如果是这样,是否有任何可能不明显但在使用这些语言进行编码/设计时我应该牢记的特殊技术?
我编码的语言是 JS,但它不是由浏览器运行的,它是由我加载我的工作的 iOS 应用程序运行的。
TIA
尼可
简单的问题,是否有描述代码或语言的定义/术语,其中代码主体被一遍又一遍地连续扫描,而不是仅在调用函数时。
如果是这样,是否有任何可能不明显但在使用这些语言进行编码/设计时我应该牢记的特殊技术?
我编码的语言是 JS,但它不是由浏览器运行的,它是由我加载我的工作的 iOS 应用程序运行的。
TIA
尼可
简单的问题,是否有描述代码或语言的定义/术语,其中代码主体被一遍又一遍地连续扫描,而不是仅在调用函数时。
您是在谈论“显式与隐式事件循环”吗?
在“正常”环境中,您必须显式编写或调用读取消息(键/鼠标移动)并调用事件处理程序的“事件循环”。对于 CLI (REPL),这通常是自定义的,但对于 GUI,大部分样板文件由您的平台处理。通常,代码的最后一行说Events.run
或while (!quit) { process_events }
在其他环境(即浏览器或 Excel 文档)中,您没有明确的事件循环。您只编写“鼠标移动”或“当此单元格更改时”的响应式代码。实际上有一个事件循环,但它隐藏在平台的深处,你无法修改它。
如果是这样,是否有任何可能不明显但在使用这些语言进行编码/设计时我应该牢记的特殊技术?
我认为“隐式事件循环”没有任何特定内容。但是对于(单线程)事件循环编程要记住一件事:您需要经常“放弃 CPU”以让事件被泵送。在过去的糟糕日子里,深思熟虑的程序(读取文件或计算)在屏幕上拖动时会导致问题。解决方案是读取文件或分块计算,并更频繁地屈服于事件循环。(今天,窗户移动的架构不同,所以问题不会出现在那里,但它可以出现在其他地方。)
这些是我认为您也在引用的事件处理程序。
让我们看一个 javascript 等待感知点击的示例(即代码总是在运行,但一旦发生这种情况,它就会触发)
<!DOCTYPE html>
<html>
<head>
<style>
p { color:red; margin:5px; cursor:pointer; }
p:hover { background:yellow; }
</style>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
</head>
<body>
<p>First Paragraph</p>
<p>Second Paragraph</p>
<p>Yet one more Paragraph</p>
<script>
**$("p").click(function ()** {
$(this).slideUp();
});
</script>
如果你看到点击功能(它的粗体)只是在等待一个段落元素被点击。因此,通过使用事件处理程序,您可以让它看起来好像该代码随时可以随时运行。
编辑:对此发表评论,因为我想我可能错过了理解您的要求或尝试做的事情。
请注意,从内存的角度来看,这种编程非常繁重。让您的程序对事件做出反应比不断检查条件要好得多。
Javascript 确实有一个 setInterval 函数,它基本上在定义的时间内一遍又一遍地运行一个函数。