Ruby非阻塞定时,如何实现setTimeout般长尾疑问?

2026-04-11 14:571阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计252个文字,预计阅读时间需要2分钟。

Ruby非阻塞定时,如何实现setTimeout般长尾疑问?

我需要在初始化后几分钟内更新对象的某些属性。我尝试在函数内部使用`sleep`,但它延迟了所有事件的执行:

pythonactive=Truedef deactivate(): sleep(120) print('deactivate') active=False

deactivate()print(active)我希望会发生的变化是...

我需要在初始化后几分钟更改类的属性.我试图在函数内部使用sleep,但它延迟了所有事情的执行:

active = true def deactivate sleep 120 puts 'deactivate' active = false end deactivate puts active

我希望会发生的事情是真的会先退出然后两分钟后停用会记录.但是,发生的情况是停用,然后在两分钟后错误注销.

Ruby非阻塞定时,如何实现setTimeout般长尾疑问?

在JavaScript中我会做类似的事情:

var active = true; setTimeout(function(){ console.log('deactivate'); active = false; },120000); console.log(active); 对于此任务看起来有点过分,但您可以使用 delayed_job异步运行未来时间的任务.

def deactivate puts 'deactivate' active = false end active = true handle_asynchronously :deactivate, :run_at => Proc.new { 2.minutes.from_now }

本文共计252个文字,预计阅读时间需要2分钟。

Ruby非阻塞定时,如何实现setTimeout般长尾疑问?

我需要在初始化后几分钟内更新对象的某些属性。我尝试在函数内部使用`sleep`,但它延迟了所有事件的执行:

pythonactive=Truedef deactivate(): sleep(120) print('deactivate') active=False

deactivate()print(active)我希望会发生的变化是...

我需要在初始化后几分钟更改类的属性.我试图在函数内部使用sleep,但它延迟了所有事情的执行:

active = true def deactivate sleep 120 puts 'deactivate' active = false end deactivate puts active

我希望会发生的事情是真的会先退出然后两分钟后停用会记录.但是,发生的情况是停用,然后在两分钟后错误注销.

Ruby非阻塞定时,如何实现setTimeout般长尾疑问?

在JavaScript中我会做类似的事情:

var active = true; setTimeout(function(){ console.log('deactivate'); active = false; },120000); console.log(active); 对于此任务看起来有点过分,但您可以使用 delayed_job异步运行未来时间的任务.

def deactivate puts 'deactivate' active = false end active = true handle_asynchronously :deactivate, :run_at => Proc.new { 2.minutes.from_now }