今天在回调的时候发现一件郁闷的事情:
如果在客户端接收服务器msg的函数中嵌套一个发消息到服务器的函数, 会造成无限循环, 这时候可用setTimeout 解决!
e.g.
function A_RcvFromServer(msg)
{
...
if (GetCallBackArray(msg)[0] == 'S')
A_SendToServer(...) //此时会造成无限循环因为系统执行此函数 并不会回调,而是直接调用A_RcvFromServer(msg)函数,并且msg是上次挂起的回调所接收的msg
改成:
function A_RcvFromServer(msg)
{
...
if (GetCallBackArray(msg)[0] == 'S')
window.setTimeout("A_SendToServer(...);", 50);
即可。
ps:window.setTimeout("A_SendToServer(...);", 50); 中设置的时间50有待斟酌,不知和网络是否有关?
本文介绍了一种在客户端接收服务器消息并嵌套发送消息时出现无限循环的问题及解决方案。通过使用window.setTimeout方法来延迟发送消息,有效避免了无限循环的情况。
2082

被折叠的 条评论
为什么被折叠?



