[探讨] 请问是否有办法能够取消 skynet.timeout() ?

368 views
Skip to first unread message

丁一

unread,
Dec 25, 2016, 1:20:52 PM12/25/16
to skynet-users

skynet.timeout()可以很容易设置定时器,但是有些场合需要在事情正常结束后取消掉定时器(很常见的需求),请问目前的实现 是否有方便的方法能做到这点?

参考:JS中 setInterval() 函数可以返回一个id值,通过该值可以取消定时器。

var tmr = setInterval(...)

...

clearInterval(tmr)  //取消定时器



Sleepers Tang

unread,
Dec 25, 2016, 9:06:37 PM12/25/16
to skynet...@googlegroups.com
这个问题都回答800遍了。把你timeout的func设置成nil就行了。

丁一

unread,
Dec 25, 2016, 10:58:46 PM12/25/16
to skynet-users
; - O  哦,是吗,我看代码似乎不支持覆盖前面的啊,可以那么做吗? Are you sure?

如果没有标记 如何区分timer?  我试验过,多次调用skynet.timeout 会被多次执行的,不会覆盖前面设置的。而且设置nil会error   


skynet.start(function()

print("test time <-----------", skynet.time() )

skynet.timeout(800, function ()
print("Fire 800<-----------")
end)

skynet.sleep(200)

skynet.timeout(200, function ()
print("Fire 100<-----------")
end)

skynet.timeout(0, nil)
skynet.sleep(900)
skynet.exit()
end)





[:0100000f] lua call [0 to :100000f : 5 msgsz = 0] error : ./lualib/skynet.lua:517: ./lualib/skynet.lua:155: ./lualib/skynet.lua:104: attempt to call a nil value (upvalue 'f')
stack traceback:
./lualib/skynet.lua:104: in function <./lualib/skynet.lua:103>
stack traceback:
[C]: in function 'assert'
./lualib/skynet.lua:517: in function 'skynet.dispatch_message'
^C



云风 Cloud Wu

unread,
Dec 25, 2016, 11:09:15 PM12/25/16
to skynet-users
第 802 遍:

function set_timeout(ti, f)
  local function t()
    if f then
      f()
    end
  end
 skynet.timeout(ti, t)
 return function() f=nil end
end

丁一 <yizu...@gmail.com>于2016年12月26日周一 上午11:58写道:
--
您收到此邮件是因为您订阅了Google网上论坛上的“skynet-users”群组。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到skynet-users...@googlegroups.com
要发帖到此群组,请发送电子邮件至skynet...@googlegroups.com
访问此群组:https://groups.google.com/group/skynet-users
要在网络上查看此讨论,请访问https://groups.google.com/d/msgid/skynet-users/0400f37f-e5f7-4cb8-9aed-dd2e1a3573f5%40googlegroups.com
要查看更多选项,请访问https://groups.google.com/d/optout

丁一

unread,
Dec 25, 2016, 11:44:53 PM12/25/16
to skynet-users
这个实现太精美了,太浓郁了,谢谢云大提点  
Reply all
Reply to author
Forward
0 new messages