问题标签 [delayed-execution]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
90753 浏览

php - PHP睡眠延迟

在 PHP 中,我想在循环的每次迭代中放置一些秒延迟。

我怎样才能做到这一点?

0 投票
1 回答
129 浏览

ruby-on-rails - Ruby 中的延迟处理作业:有多少没有阻塞我的路径

我有这个项目,它仍然使用延迟作业作为处理作业队列。我最近发现了一个让我质疑一些事情的边缘案例:我有这个 AR(顺便说一下,我正在使用 MySQL)对象,它在更新时会向 has_many 关联的所有元素发送一条消息。为了做到这一点,我必须实例化这个关联的所有元素,并在它们上调用消息。对他们每个人来说,延迟这个消息的调用似乎只是公平的。

现在该关联已经增长了很多,在极端情况下,我有 40000 个属于该关联的对象。因此,消息发送现在涉及(同步)创建 40000 个延迟作业作业。由于这些发生在更新后回调而不是提交后,因此它们(ab)使用相同的连接,而不是利用任何上下文切换。短版,我在同一连接上有 1 个更新语句和 40000 个插入的管道。出于这个原因,此更新在生产中消耗了相当多的时间。

现在,有很多方法可以解决这个问题:将回调更改为提交后,创建 1 个(同步)延迟作业,这将创建 40000 个作业(我不想在一个作业中处理 40000 个(AR)对象,现在的 40000 明天将是 120000,这就是记忆世界末日),等等……

但我真正考虑的是将我的延迟处理队列切换到 resque 或 sidekiq。他们使用redis,因此写入性能要好得多。他们使用一些东西而不是 MySQL,这意味着连接不会相互阻塞。我唯一的问题是:一次 40000 次写入 redis 会花费我多少钱?并且:这些选项中的任何一个是否首先将作业存储在内存中,而不是阻止对客户端的响应并将它们延迟存储在 redis 中?所以,我真正的问题是:在这种极端情况下,这种延迟会耽误我多少时间?

0 投票
1 回答
510 浏览

stream - 延迟评估期间的记忆

《计算机程序的结构和解释》一书介绍了如下的记忆过程:

在建议延迟执行的定义时,(delay <exp>)be (memo-proc (lambda () <exp>))。可以使用以下过程强制延迟对象:

在给出这些定义的章节中,计算是使用流完成的。每个流都是一对,有一个头和一个延迟的尾。

但是,如果不使用查找表或某种其他类型的累积先前调用的数据结构,我看不到如何实现记忆化。

包含这些定义的章节在这里

当我们使用各种参数来记忆单个过程时,查找表会很有用。然后,我们将参数作为键,将过程的结果作为值。在这种情况下,我们有空程序,因此我们不需要查找表。我们所需要的只是我们迄今为止创建的一组延迟对象。但是,这里使用了闭包。

根据memo-proc上面的定义,每个延迟对象实际上都是一个带有值的闭包already-run?result,它们都被初始化为false。但是,由于调用中的每个延迟对象proc都有自己的闭包和自己的本地already-run?and result,因此修改它们不会更改调用树中的其他对象。因此,我觉得任何其他程序都不会再读取一个记忆值。

所以我的问题是,我在想什么错误或者对一切如何运作的正确解释是什么?

0 投票
2 回答
3380 浏览

ruby-on-rails - Sidekiq 延迟邮件程序不发送电子邮件

下午好,

我正在尝试使用 Sidekiq/Redis 在后台发送电子邮件。我应该注意以下几点:

  1. 我正在使用devise-async,它没有问题

  2. 我的ActionMailer设置很好
    如果我将邮件调用更改为UserMailer.contact_email(name).deliver!电子邮件发送就好了。什么不工作是UserMailer.delay.contact_email(name)

  3. 我可以在我的日志中看到正在处理的工作,你甚至会认为邮件正在通过。只有当我发送给自己时,我才注意到它不起作用:
    Apr 08 18:36:58 app01-production sidekiq: 2013-04-09T00:36:58Z 31155 TID-1jdwoq Sidekiq::Extensions::DelayedClass JID-6143790ebbf6e8bbc4a7bb85 INFO: done: 4.923 sec

它显然是在邮件对象上调用 DelayedClass 扩展,但不行。鉴于这devise-async行得通,我想知道我是否使用了错误的语法或什么?

谢谢!!

0 投票
1 回答
204 浏览

javascript - JavaScript:初始化对象后初始化内部变量

更新:重写问题,因为原始问题有错误的假设(我在已经初始化我认为未定义的变量的控制台中运行代码)。

这是有道理的:

但是,为什么下一个示例不会引发错误?如果第二行在第一行之前运行,为什么 obj.whichScope 不解析为“After”?

如果上一个示例中的“var a”在 obj 初始化之前运行,那么 'a = “After”;' 的任何部分是否 在 obj 初始化之前也运行?

如果 whichScope 引用了一个返回 'a' 的函数,那么它在最后一个示例中会解析为“After”。

0 投票
0 回答
175 浏览

c# - 强制执行代码直到方法结束

我正在开发客户端-服务器多线程应用程序:

沟通的进展是:

  1. 服务器侦听套接字
  2. 客户端连接并向服务器发送请求或请求
  3. 每个请求都以 0x04 结束
  4. 服务器必须使用比传入请求慢的操作来处理每个请求

当两个请求在短时间内发生并且由于第二个请求即将处理而无法处理第一个请求直到方法结束时,我在“ProcessClient”方法中遇到问题。foreach 循环后出现问题:

方法直到最后才会执行,并且不会使用以下代码片段向客户端发送响应:

因为第二个请求发生在“ProcessClient”方法中。

有什么办法可以解决这个问题。我一直在寻找许多没有成功的解决方案。

整个代码如下:

0 投票
1 回答
610 浏览

heroku - Heroku,sucker_punch 明显的无声失败

我的应用程序在 Heroku 上与 unicorn 一起运行,并使用Sucker_punch在后台发送少量电子邮件,而不会减慢 Web UI。这已经工作了几个星期。

我将独角兽配置更改为 Heroku 推荐的配置。推荐的配置包括独角兽进程数的选项,我将进程数从 2 增加到 3。

显然这太过分了。Sucker_punch 作业停止运行。我有指示它们何时排队的日志消息,并且我有指示它们何时开始处理的消息。日志显示它们正在排队,但处理从未开始。

我的理论是,我从 2 到 3 只独角兽超出了记忆。

我没有在任何地方找到表明问题的消息。

Q1:我应该期望在某处找到失败消息吗?像“试图启动吸盘 - 哎呀,没有足够的内存”之类的东西?

Q2:关于将来如何通知我这样的失败的任何建议。

谢谢。

0 投票
4 回答
68 浏览

javascript - Javascript:如何延迟内容功能

我有

不幸的是,okToUpdate变量不会立即更新,因此从上一次调用函数开始至少需要 100 毫秒才能获得正确的值。如何使 MyFunc 延迟执行?

0 投票
1 回答
774 浏览

jquery - 如何延迟 jQuery 函数?

我试图使以下发生:

我有一个按钮,单击该按钮会将新的 div 元素附加到当前元素。

我想在创建这个新 div 后立即对其做一些事情,我该怎么做?目前我试图在单击“添加 div 按钮”时隐藏它,如下所示:

但它不起作用,因为我认为这段代码可能会在附加 div 之前尝试这样做。“添加 div 按钮”在后端,我无权访问代码,所以我只希望我的函数加载稍微延迟(如果它实际上是在计时问题)。

0 投票
1 回答
303 浏览

workflow-foundation-4 - Workflow Foundation - 服务器重新启动时的挂起计时器

我有一个工作流,它具有延迟活动,导致它持续存在,延迟到期后,会发送通知。工作流通过工作流服务公开。

除了服务器重新启动或服务器因维护一两天而关闭并且计时器已经过期的情况外,这非常有效。在这种情况下,在与特定工作流相关的第一个请求到达 WCF 终结点之前,不会发送通知。

不得不提一下,应用程序池已经设置为 alwaysRunning。

是否需要为 IIS/AppFabric 添加任何其他内容来检查应该已经执行的挂起计时器?

我正在使用 Workflow Foundation 4.5。