2016-08-08 32 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