如何使用异步功能等待服务器应答? [关闭]

问题描述 投票:-1回答:1

例如,我有这样的功能:

function targetStarted() {

    setInterval(function () { // Content value
        gameResultCount.addEventListener = "";

    }, 1000);

如何编写异步函数而不是我的样本。此代码每秒向最终网站发送请求以获得结果。最终网站可以像足球结果,关于特殊角色的直播新闻,在特殊时间直播新游戏(当我们想要在其他玩家之前开始游戏时),在我们需要在另一个人之前进行实时注册时,以及任何其他人其他样品

但是这个功能有一个问题:

它应该每秒向网站发送请求以了解目标服务器何时响应,但由于需求量大,这会对目标网站和服务器造成太大压力

我想得到通知,但我不想随时向服务器发送请求我认为这个问题可以通过异步功能解决,但如何?异步函数可以像代码一样

async function targetStarted()

let outresult = await...

setInterval(function () { // Content value
            gameResultCount.addEventListener = "";

        }, 1000);

}

我需要一个实时样本来做到这一点,谢谢你

javascript
1个回答
1
投票

我们希望获得通知,但不要向服务器发送任何秒,我认为可以使用async func解决此问题

不,异步函数用于删除请求中的阻塞,它们没有时间概念 - 这就是为什么它们基于JavaScript中的Promise对象。时间约束由您应用。他们可以花1秒,10秒甚至10ms完成。

一个建议:不要对这些完整的HTTP请求使用async / await。这肯定会减慢服务器的速度,并且还会导致客户端浏览器上的巨大负载发送请求,然后加载响应。我假设您希望每秒轮询资源,因为您希望获得实时体验。

相反,请考虑使用Socket.io包并使用套接字进行通信。在大多数情况下,这是轻量级和快速的,并且直接插座上的通信也会更加平滑。您绝对可以在套接字通信中实现异步模式,但这不会产生完整的HTTP请求和响应的开销。

  • 您可以随时发送指标。
  • 客户端不需要轮询任何内容,因此将大部分工作留在服务器端。
  • 服务器端将使用事件驱动的方法将数据发送到客户端,因为它是可用的。

这是你应该用于Node.js中的实时应用程序,而不是每秒发送HTTP请求。

有关教程和操作方法,请阅读https://socket.io/上的官方文档。

其次,既然你提到游戏,这里有一个存储库,你可以用它来开始使用Socket.io和Node.js框架的多人游戏服务器开发者; https://github.com/benas/gamehub.io

© www.soinside.com 2019 - 2024. All rights reserved.