【问题标题】:Processing.js sleepProcessing.js 睡眠
【发布时间】:2015-09-15 23:52:11
【问题描述】:

我想在 javascript/processing.js 中编写一个sleep() 函数。即:中断程序流多少秒的函数。

  1. 很明显如何用“忙等待”来做到这一点,但这往往会减慢浏览器的速度并使浏览器无法使用

  2. 我知道“睡眠”不是好的 javascript。我希望这个函数用于教学目的(帮助孩子理解他们的代码),而不是用于生产。

  3. 既然它是说教的,那么显式回调就太复杂了。调用函数应该像在 bash 或 php 中一样简单——但是,我们可以使用最神秘的东西,只要它们保持隐藏在 sleep 函数中(包括 processing.js 技巧)

  4. 我知道问题 What is the JavaScript version of sleep()?,但仍然希望有一个 hack 来停止 processing.js(或者可能是一个真正的 javascript 解决方案,但它可能是不明智的)

  5. 这个函数应该在 draw() 循环之外工作——如果它在内部也能工作,那是一个奖励

如果相关,此功能将用于可汗学院

【问题讨论】:

  • 我用忙等待结束了

标签: javascript processing.js


【解决方案1】:

很明显如何用“忙等待”来做到这一点,但这往往会减慢浏览器的速度并使事情无法使用

sleep() 函数也会导致这种行为,因为 JavaScript 是单线程的。

因为它是说教的,所以显式回调太复杂了。

您几乎已经回答了自己的问题:如果不使用回调或忙于等待,就无法在 JavaScript 中执行 sleep() 函数。

您可能会考虑使用 Java 模式来显示 sleep(),但听起来忙等待是要走的路。

以我的拙见,即使你能找到一个黑客来导致睡眠,这对孩子来说可能不是一个很好的例子,因为他们的代码永远不会这样做。他们更有可能尝试渲染太多对象。如果您试图证明在 draw() 函数内部做太多事情会很糟糕,那么为什么不让他们在 draw() 函数内部做太多事情呢?教他们 for 循环,然后让他们看看当他们绘制 100 个或 1000 个或 1,000,000 个矩形时会发生什么!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    • 2017-09-29
    • 2021-04-12
    • 2010-11-16
    • 1970-01-01
    • 2011-04-07
    相关资源
    最近更新 更多