有人可以解释到底是什么并显示示例吗?

来源:Douglas Crockford的Long running tasks YUI博客

最佳答案

最初,我认为这只是迭代的错字,因为在网上搜索激励不会产生明显的结果。

但是,然后,我碰到references,该词是克罗克福德本人在他的一次演讲中创造的。
在网上,唯一可以找到解释的地方是The Factorial Tutorial,在他的页面上,该文章在 Act 2 中,作为对代码示例的注释,他指出:



这似乎是相关术语对的一部分,因为他的下一个代码示例在不使用堆栈的情况下执行递归,包含该对中的另一个成员:



因此,似乎 eteration ecursion 是Crockford自己发明和定义的术语,用于引用E Programming Language上下文中的消息迭代和递归,该术语是在Java之上为编写分布式应用程序的开发人员设计的。

该语言称为 E 的事实可能是为其选择特定术语(** e *** teration *和** e *** cursion *)赋予其特定的迭代和递归 flavor 的原因。

如果是Javascript上下文,则Crockford从分钟30:40 开始,将术语 eteration 解释为对话Crockford on JavaScript -- Scene 6: Loopage的一部分:



结果是 eteration 安排了循环的每个步骤,而不是一个紧密的循环,而是在太长的时间内阻塞了该接口(interface),该链条只在实际步骤执行时(而不是在步骤之间)阻塞该链。这样就可以在与接口(interface)相同的线程中执行长时间运行的任务(Javascript是单线程的),同时保持应用程序的响应能力。

查看全文,质量更高,并附上全文抄本here

另外,有关如何实现这种技术的引用,请考虑以下情形:

<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>

有两个div,一个显示正在进行的枚举的索引,另一个显示文本The Interface is Still Responsive!每按一次“尝试我”按钮。从代码中可以看到,通过setTimeout间隔一定的时间安排了发布步骤,从而允许进行用户交互并进行处理。因此,随着用户单击按钮并触发第二个div的更新,逐步运行步骤将继续运行,在完成页面实际执行的工作的同时保持页面的响应速度(在这种情况下,仅显示索引)。

09-26 05:03