public IPromise Wait(float seconds, Action <float> progressCallback = null)
        {
            Deferred deferred = Deferred.GetFromPool();

            awaiters.Add(new Awaiter
            {
                duration            = seconds,
                finishTime          = Time.time + seconds,
                unscaledTime        = false,
                additionalCondition = null,
                progressCallback    = progressCallback,
                resolver            = deferred,
            });
            return(deferred);
        }
        public IPromise WaitForTrue(Func <bool> condition)
        {
            Deferred deferred = Deferred.GetFromPool();

            awaiters.Add(new Awaiter
            {
                duration            = 0f,
                finishTime          = Time.unscaledTime,
                unscaledTime        = true,
                additionalCondition = condition,
                progressCallback    = null,
                resolver            = deferred,
            });
            return(deferred);
        }
Example #3
0
        /// <summary>
        /// adds new promise constructor to current promise and returns wrapper that resolves with added promise
        /// A.Then(B) - returns promise that resolves when promise from B is resolved
        /// </summary>
        /// <param name="next">constructor for next promise</param>
        /// <returns>Promise</returns>
        public IPromise Then(Func <IPromise> next)
        {
            Deferred deferred = Deferred.GetFromPool();

            Done(() =>
            {
                IPromise promise = next();

                promise.Done(() => deferred.Resolve());
                promise.Fail(ex => deferred.Reject(ex));
            });

            Fail(ex => deferred.Reject(ex));

            return(deferred);
        }
Example #4
0
        public static Promise <T> WithCoroutine <T> (IEnumerator coroutine)
        {
            var deferred = new Deferred <T>();

            return(deferred.RunAsync(coroutine));
        }
Example #5
0
 internal Promise(Deferred <TResult, TInput> deferred)
 {
     this.deferred = deferred;
     callbacks     = new Queue <Callback <TResult> >();
     exceptions    = new Queue <Callback <Exception> >();
 }