加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Ruby中的非阻塞定时事件,如JavaScript setTimeout

发布时间:2020-12-17 01:35:29 所属栏目:百科 来源:网络整理
导读:我需要在初始化后几分钟更改类的属性.我试图在函数内部使用sleep,但它延迟了所有事情的执行: active = truedef deactivate sleep 120 puts 'deactivate' active = falseenddeactivateputs active 我希望会发生的事情是真的会先退出然后两分钟后停用会记录.
我需要在初始化后几分钟更改类的属性.我试图在函数内部使用sleep,但它延迟了所有事情的执行:

active = true

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

deactivate
puts active

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读