今天在回调的时候发现一件郁闷的事情:
如果在客户端接收服务器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有待斟酌,不知和网络是否有关?