private void ExecuteCallback(PromiseExecutor executor) { try { executor(ResolveSelf, RejectSelf); } catch (Exception ex) { RejectSelf(EcmaValueUtility.GetValueFromException(ex)); } }
/// <summary> /// 初始化一個Promsie實例 /// </summary> /// <param name="executor">Promise執行程序主體</param> public Promise(PromiseExecutor <T> executor) { this.Task = Task <T> .Run <T>(() => { executor((T r) => { Result = r; Status = PromiseStatus.Fulfilled; }, (Exception e) => { Exception = e; Status = PromiseStatus.Rejected; }); if (Exception == null) { return(Result); } else { throw Exception; } }); }
public Promise(PromiseExecutor callback) : this() { Guard.ArgumentNotNull(callback, "callback"); ExecuteCallback(callback); }