前言
在我们开发项目,有时会遇到要从服务端接入大量的数据,链接都是服务端处理出来的数据,请求下来的数据放在字典中:
由于要请求大量的数据,但是请求方法是一样的,而且多条数据刷新时间有可能会一样,所有数据用一个方法去请求是行不通的,会出现上一条数据没请求完,下一条数据就开始请求了,倒置数据错乱。
错误请求方式:
IEnumerator LoadData(string url,Dictionary<string, object> lampDic)
{
UnityWebRequest webRequest = UnityWebRequest.Get(url);
yield return webRequest.SendWebRequest();
lastTime = Time.time;
lampDic.Clear();
//异常处理
if (webRequest.isHttpError || webRequest.isNetworkError)
{
Debug.Log(webRequest.error);
}
else
{
try
{
//字符串解析字典
lampDic = Json.Deserialize(webRequest.downloadHandler.text) as Dictionary<string, object>;
}
catch (System.Exception)
{
lampDic.Clear();
Debug.Log("字符串解析字典错误");
}
}
}
优化之后:
public delegate void GetNetWorkData(Dictionary<string, object> d);
public abstract class BaseUpdateDate<T> : MonoBehaviour
{
IEnumerator RequestData(string url, GetNetWorkData netWorkData)
{
UnityWebRequest request = UnityWebRequest.Get(url);
yield return request.SendWebRequest();
Dictionary<string, object> data = null;
if (request.isHttpError || request.isNetworkError)
{
Debug.Log("网络错误:" + request.error);
}
else
{
try
{
//序列化
data = Json.Deserialize(request.downloadHandler.text) as Dictionary<string, object>;
netWorkData(data);
}
catch(System.Exception)
{
data.Clear();
Debug.Log("数据解析错误");
}
}
}
}