如何设置等待socket.on事件的上限?

时间:2014-03-10 07:20:46

标签: javascript asynchronous timer socket.io

我触发一个事件

socket.emit('release now');

在一段时间后可能会或可能不会触发另一个事件(取决于某些用户输入)。

socket.on('released', function(){
    //do stuff
});

但我只想等待最多,比方说,5秒。如果没有,那么无论如何都要继续//do stuff(其他一些小事情已经改变)。

如何使用setTimeout执行此操作?或者我应该首先使用它?因为我无法想到如何让它们(socket.on('...seTimeout)相互沟通....

1 个答案:

答案 0 :(得分:1)

不确定我是否理解你所追求的但是我会开枪:

var eventTimeout = setTimeout(function{ /* timeout code here */}, 5000);
socket.emit('release now'); // emit fired and timer set

socket.on('released', function() {
   clearTimeout(eventTimeout); // cancel our timeout since we got released on time
   // do Stuff
});

所以

/* timeout code here */

如果释放的事件在5秒内没有发生,则会触发。