Bak*_*dan 18 javascript terminology
有人可以解释一下Eteration究竟是什么并展示一个例子吗?
来源:道格拉斯克罗克福德的长期任务 YUI博客
luv*_*ere 32
最初,我认为这只是一个错误的迭代,因为在线搜索迭代不会产生显着的结果.
但是,然后,我发现了一些参考文献,说明这个词是由克罗克福德本人在他的一次会谈中创造的.
在线,我可以找到解释的唯一地方是他的页面,在因子教程中,这篇文章在第二幕中作为对代码示例的评论,他说:
第2a步:消息迭代(eteration)
这似乎是一对相关术语的一部分,因为他的下一个代码示例在不使用堆栈的情况下执行递归,包含该对的另一个成员:
动作2b:消息递归(ecursion)
因此,似乎迭代和偏移是由Crockford自己发明和定义的术语,用于在E编程语言的上下文中引用消息迭代和递归,该编程语言是为编写分布式应用程序的开发人员在Java之上设计的.
语言被称为E的事实可能是给出其特定迭代和递归风格所选术语的理由(**e*teration*和**e***cursion*).
如果Javascript的上下文,Crockford解释术语eteration作为谈论Crockford在JavaScript上的一部分 - 场景6:Loopage,从30:40开始:
迭代意味着将任务分成多个循环,以便在每次迭代时,而不是通过常规循环,在循环的底部我们调用
setTimeOut,传递一个函数,使我们进行下一次迭代.这意味着转弯将会很短 - 转弯只有一次转换 - 而且我们可以做任意多次的迭代,而不是锁定事件循环.
结果是,如果花费太长时间而不是紧密循环阻塞接口,则迭代会调度循环的每个步骤,在链中仅在实际步骤执行时阻塞接口,而不是在步骤之间.这使得可以在与接口相同的线程中执行长时间运行的任务(Javascript是单线程的),同时保持应用程序响应性.
退房充分谈话中更好的质量,并伴有全文转录这里.
另外,有关如何实现此类技术的参考,请考虑以下情形:
<html>
<head>
<script type="text/javascript">
function testFeedback()
{
var feedbackDiv = document.getElementById("feedbackDiv");
feedbackDiv.innerHTML += "The Interface is Still Responsive!</br>";
}
var currentNumber = 0;
var loopStepDelay = 30;
function performLoopStep()
{
var numbersDiv = document.getElementById("numbersDiv");
numbersDiv.innerHTML = currentNumber++;
setTimeout("performLoopStep()", loopStepDelay);
}
setTimeout("performLoopStep()", loopStepDelay);
</script>
</head>
<body>
<div id="numbersDiv"></div>
</br>
</br>
<div id="feedbackDiv"></div>
</br>
</br>
<button onClick="testFeedback()">Try Me</button>
<body>
</html>
Run Code Online (Sandbox Code Playgroud)
有两个divs,一个显示正在进行的迭代的索引,另一个附加文本接口仍然响应!在每个试用我按钮按下.从代码中可以看出,迭代步骤按setTimeout一定的时间间隔进行调度,允许用户交互发生并进行处理.因此,当用户点击按钮并触发第二个div的更新时,迭代步骤将继续运行,保持页面的响应性,同时在其必须执行的工作(在这种情况下,仅显示索引)中实现真正的进展.
| 归档时间: |
|
| 查看次数: |
1197 次 |
| 最近记录: |