2016-08-08 25 views
1

我有这段代码从服务器接收一些数据。 socket.on中的日志给出正确的数据,但返回时返回0。而且我不能把返回到Socket.on。从C#项目中的socketIO返回

public int GetInfor(string userID) 
{ 
    int result = 0; 
    socket.On("data" , (SocketIOEvent e) => { 
     formData data= jss.Deserialize<formData>(string.Format("{0}", e.data)); 
     if (data.err) 
      result = Int32.Parse(data.Infor); 
     else result = -1; 
     Debug.Log (result); 
    }); 
    Debug.Log (result); 
    return result; 
} 

回答

0

我认为会发生这种情况,因为您的方法返回的结果是直接设置为0而无需等待接收任何事件。

这是一个简单的解决方案:

public void GetInfor(string userID, Action<int> resultAction) 
{ 
    int result = 0; 
    socket.On("data" , (SocketIOEvent e) => { 
     formData data= jss.Deserialize<formData>(string.Format("{0}", e.data)); 
     if (data.err) 
      result = Int32.Parse(data.Infor); 
     else 
      result = -1; 
     resultAction.Invoke(result); // or just simplt resultAction(result); 
    }); 
} 

使用

this.GetInfor("exampleUserId", result => 
{ 
    // do something with result 
}); 
+0

它的伟大工程。你帮了我很多。谢谢。但只有一个问题。我如何使用this.getInfor之后的结果 – lokevn

+0

只需将它的值分配给本地值,但是必须记住,值是在事件触发时创建的。 – Fka

+0

是的。得到它了。谢谢 – lokevn