搜尋

首頁  >  問答  >  主體

javascript - 前端如何解決延遲渲染

需求說明:

  一个游戏项目,前端和后端采用websocket 协议通讯。
  
  游戏主操作界面,由一个6个按钮场景和一个主弹层组成,和后端交互的信息都是在主弹层上展示的。

  现在的情况是:
  
  a.当后端通知前端游戏开始后,会连续发送好几个信息,前端接收到后端发过来的信息后,需要依次以在主弹层
  
  上展示该消息。但是这样会出现一个情况就是 后面的信息会覆盖前面的信息。无法做到消息按照后端发送的顺序
  
  依次展示。
  
  b.还有一个情况就是,假如6人局游戏, 后端会要求6人都点击确定后,然后后端会发送到下个流程的消息,前端
  
  接收到改消息,提示到下个流程了,问题是如果是 最后一个玩家点击确定后,他还没来得及提示操作完成 类似
  
  的消息,就收到后端下个流程的消息了,然后最后一个玩家确定操作的消息就被覆盖了。

  如果在多个弹层上展示还好,可项目要求必须在同一个弹层展示,还有后端那边延迟处理的话,对性能消耗太
  
  大,后端延迟不现实;前端基于setTimeout做延迟,我试了下,问题多多了。
  

  不知道对于这种需求,大家怎么处理,求教!
大家讲道理大家讲道理2800 天前684

全部回覆(2)我來回復

  • 淡淡烟草味

    淡淡烟草味2017-06-12 09:28:50

    這題字好多...結果歸根結底就是一句話,websocket 收到的訊息,先存入一個隊列,然後按先進先出和規定時間逐個彈出 message 就 ok 了,實在沒感覺難度在哪裡。

    回覆
    0
  • 大家讲道理

    大家讲道理2017-06-12 09:28:50

    a需求很奇怪啊,像通知類的資訊一般都用類似notification的形式,每條notification有自己的生命週期,時間到了才消失。
    b的話,點完確定立刻收到後端下一個流程的訊息,這不說明網路情況好嗎,結果還要為了提示完成特地去延遲?這讓我想起以前的一個段子,為了讓使用者看到酷炫的loading畫面,強制Thread.Sleep的

    回覆
    0
  • 取消回覆