public string LoadItemDict(List <CocoDressItemHolder> itemHolders, Action <Dictionary <CocoDressItemHolder, List <GameObject> > > finishAction,
                                   string requestId = "")
        {
            if (itemHolders == null || itemHolders.Count <= 0)
            {
                Debug.LogErrorFormat("[{0}<{1}>]->LoadItems: item holders is EMPTY !", name, GetType().Name);
                if (finishAction != null)
                {
                    finishAction(new Dictionary <CocoDressItemHolder, List <GameObject> > ());
                }
                return(string.Empty);
            }

            if (string.IsNullOrEmpty(requestId))
            {
                requestId = NextAnonymousRequestId.ToString();
            }
            if (RequestIsProcessing(requestId))
            {
                Debug.LogErrorFormat("[{0}<{1}>]->LoadItems: request id [{2}] ALREADY exists!", name, GetType().Name, requestId);
                if (finishAction != null)
                {
                    finishAction(new Dictionary <CocoDressItemHolder, List <GameObject> > ());
                }
                return(string.Empty);
            }

            ListenRequestFinish();

            ProcessingRequestDic.Add(requestId, finishAction);
            dressRequestItemHolderSignal.Dispatch(itemHolders, requestId);

            return(requestId);
        }
        private void OnDressRequestItemFinish(List <CocoDressItemHolder> itemHolders, string requestId)
        {
            if (!RequestIsProcessing(requestId))
            {
                return;
            }

            var itemModelsDic = new Dictionary <CocoDressItemHolder, List <GameObject> > ();

            itemHolders.ForEach(itemHolder => {
                var models = LoadItemModels(itemHolder);
                itemHolder.UnloadAsset();
                itemModelsDic.Add(itemHolder, models);
            });

            var finishAction = ProcessingRequestDic [requestId];

            ProcessingRequestDic.Remove(requestId);
            if (finishAction != null)
            {
                finishAction(itemModelsDic);
            }
        }
 public bool RequestIsProcessing(string requestId)
 {
     return(ProcessingRequestDic.ContainsKey(requestId));
 }
 public void CancelRequest(string requestId)
 {
     ProcessingRequestDic.Remove(requestId);
 }