【发布时间】:2019-10-31 12:20:56
【问题描述】:
所以我正在制作某种游戏,其中玩家有一些通电。玩家回合结束后,服务器应该有 5 秒的超时,这里没有执行任何代码,然后应该在超时后通过回合。但是,如果客户端单击其中一个电源,服务器应该停止 5 秒超时并重新开始执行。我该如何实现?
目前我正在使用,
await new Promise(r => setTimeout(r, 5000))
停止并等待超时结束,但是当客户端选择上电时如何停止超时?我们如何清除基于 Promise 的超时?
简而言之,我想做的是:
服务器端代码
function doSomething(){
if(playerHasPowerUps) await new Promise(r => setTimeout(r, 5000))
//do other things
}
在此期间,在客户端如果玩家点击一个通电,它 通知服务器该事件并且服务器将停止 上面的超时,做其他的事情
【问题讨论】:
-
您在这里没有提供太多代码上下文来提供非常具体的建议,但是如果单击加电,您可以让代码的另一部分更早(在超时触发之前)解决承诺。跨度>
-
那么我可以将以上承诺存储在一个变量中吗?我如何从其他地方解决承诺?我也编辑了描述,你能帮我看看吗?
-
您没有显示此代码是如何收到通知已单击通电的。这决定了您可能有哪些选择。一般来说,不需要在承诺执行器之外解决承诺,但您可以使用延迟对象设计模式来完成,您可以在此处看到:stackoverflow.com/questions/37651780/…
标签: javascript node.js timer