PromiseAll: async function (array) { let taskList = []; let propList = []; for (let obj of array) { for (let prop in obj) { taskList.push(obj[prop]); propList.push(prop); } } let resp = await Promise.all(taskList); let result = {}; let counter = 0; for (let prop of propList) { result[prop] = resp[counter]; counter += 1; } return result; }
const taskList = [{ adPosition : BannerPositionDataService.GetList(), big : BannerDataService.GetList(100), smallTop : BannerDataService.GetOne(200), smallBottom : BannerDataService.GetOne(300), section2 : BannerDataService.GetList(400), section3 : BannerDataService.GetList(500), section4 : BannerDataService.GetList(600), recommends : ProductDataService.GetRndList() }]; let resps = await UJ.PromiseAll(taskList);
DeepBinding: function (vueData, data) { if (Array.isArray(data)) { if (!Array.isArray(vueData)) { vueData = []; } else { vueData.splice(0); } for (let prop in data) { vueData.push(data[prop]); } } else if (typeof (data) === 'object') { if (Object.keys(data).length === 0) { return; } for (let prop in data) { if (vueData[prop] === undefined || data[prop] === null || (!Array.isArray(vueData[prop] && vueData !== null && typeof (data) !== 'object'))) { vueData[prop] = data[prop]; } else { this.DeepBinding(vueData[prop], data[prop]); } } } else { vueData = data; } }
UJ.DeepBinding(this, resp);
var root = "C://wdqd/qwewq"; var addPath = @"//\\/fwef/qwf"; var addPath2 = @"5fwfef/qwf"; var addPath3 = @"//fwef/qwf"; var addPath4 = @"\\\fwef/qwf"; var addPath5 = @"\\\\\/fwef/qwf"; var result = root.AddPath(addPath, addPath2, addPath3, addPath4, addPath5); Console.WriteLine(result); public static class Helper { public static string AddPath(this string value, params string[] addPaths) { if (string.IsNullOrEmpty(value)) { throw new Exception("起始目錄不可以為空字串"); } if (value.Contains("..") || addPaths.Any(x => x.Contains(".."))) { throw new Exception($"value: {value}, addPaths: {addPaths.Where(x => x.Contains("..")).ToOneString()} 檔名與路徑不可包含 .."); } var paths = addPaths.Select(x => x.Substring(x.FindLastContinuousCharPosition('/', '\\') + 1).SafeFilename()).ToList(); if (paths.Any(x => System.IO.Path.IsPathRooted(x))) { throw new Exception("不可併入完整路徑 .."); } paths.Insert(0, value.SafeFilename()); return System.IO.Path.Combine(paths.ToArray()); } public static string ToOneString<T>(this IEnumerable<T> list, string separator = ",") { var strList = list.Select(x => x.ToString()); return string.Join(separator, strList); } public static int FindLastContinuousCharPosition(this string input, params char[] targets) { int lastPosition = -1; for (int i = 0; i < input.Length; i++) { if (targets.Contains(input[i])) { lastPosition = i; } else { break; } } return lastPosition; } public static string SafeFilename(this string value) { return GetValidFilename(value); } public static string GetValidFilename(string value) { string ValidFilenameCharacters = @"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\-_$.@:/# "; if (value.Contains("..")) { throw new Exception("路徑中不可包含 .. "); } string newUrl = ""; for (int i = 0; i < value.Length; i++) { var c = value.Substring(i, 1); int k = ValidFilenameCharacters.IndexOf(c); if (k < 0) { throw new Exception($"檔名 '{value}' 中有非法的字元 '" + c + "'。"); } newUrl += ValidFilenameCharacters.Substring(k, 1); } return newUrl; } }
.andSelf() .live() .die() .error() .load() .unload() .size() .toggle()
public ConcurrentBag<V2SalesOrderGetDataList> ConcurencyGetApp91OrderDetails(List<string> TMCodes, int shopId, ref ConcurrentBag<string> orderErrMsgs) { #region 平行查詢 ConcurrentBag<V2SalesOrderGetDataList> result = new ConcurrentBag<V2SalesOrderGetDataList>(); ConcurrentBag<string> errs = new ConcurrentBag<string>(); ConcurrentQueue<string> TMCodeQueues = new ConcurrentQueue<string>(); TMCodes.ForEach(x => TMCodeQueues.Enqueue(x)); Action searchOrderDetail = () => { if (!TMCodeQueues.IsEmpty) { string TMCode = string.Empty; while (TMCodeQueues.TryDequeue(out TMCode)) { V2SalesOrderGetReqModel reqModel = new V2SalesOrderGetReqModel() { ShopId = shopId, TGCode = null, TMCode = TMCode, TSCode = null, }; try { V2SalesOrderGet91API req = new V2SalesOrderGet91API(); var resp = req.Execute(reqModel, shopId); if (resp.Status == "Success") { foreach (var l in resp.Data.List) { result.Add(l); } } else { //主單編號 , 錯誤原因 errs.Add(TMCode + " , " + resp.ErrorMessage); } } catch (Exception ex) { errs.Add(TMCode + " , " + ex.Message); } } } }; //指派Thread Parallel.Invoke(searchOrderDetail, searchOrderDetail); #endregion //查詢失敗 orderErrMsgs = errs; return result; }