Exemple #1
0
        /// <summary>Adds an object to the given set. If the set doesn't exist, it creates one.</summary>
        private List <PromiseDelegate> add(List <PromiseDelegate> set, bool success, PromiseDelegate toAdd)
        {
            if (toAdd == null)
            {
                return(set);
            }

            // Already complete?
            if (state != PROMISE_PENDING)
            {
                // Instantly run:
                if ((success && state == PROMISE_FULFILLED))
                {
                    toAdd(latestMessage);
                }
                else if ((!success && state == PROMISE_REJECTED))
                {
                    toAdd(latestMessage);
                }

                return(set);
            }

            if (set == null)
            {
                set = new List <PromiseDelegate>();
            }

            set.Add(toAdd);
            return(set);
        }
Exemple #2
0
 /// Add a callback to invoke when the deferred is resolved or rejected
 /// Notice that if the promise is already resolved (eg. a stupid iterator)
 /// the callback is invoked as soon as it is called.
 public void Then(PromiseDelegate <TOk, TErr> callback)
 {
     if (_parent.Pending)
     {
         _callbacks.Add(callback);
     }
     else
     {
         callback(_parent.Result);
     }
 }
Exemple #3
0
        /// <summary>Provides methods to run when this promise completes.</summary>
        public Promise then(PromiseDelegate onFulfil, PromiseDelegate onReject)
        {
            if (target != null)
            {
                return(target.then(onFulfil, onReject));
            }

            // Create the frame now:
            PromiseFrame frame = new PromiseFrame();

            frame.success = onFulfil;
            frame.fail    = onReject;

            // Already complete?
            if (state != PROMISE_PENDING)
            {
                // Instantly run:
                Promise prom = frame.run((state == PROMISE_FULFILLED), latestMessage);

                if (prom != null)
                {
                    // We've got a new target!
                    target = prom;
                    return(prom);
                }

                return(this);
            }


            // Add a frame now:
            if (eventsToRun == null)
            {
                eventsToRun = new List <PromiseFrame>();
            }

            eventsToRun.Add(frame);

            return(this);
        }
Exemple #4
0
 /// <summary>Provides methods to run when this promise completes.</summary>
 public Promise then(PromiseDelegate onFulfil)
 {
     return(then(onFulfil, (Promise)null));
 }
Exemple #5
0
 /// <summary>Provides methods to run when this promise completes.</summary>
 public Promise then(PromiseDelegate onFulfil, PromiseDelegateVoid onReject)
 {
     return(then(onFulfil, toDelegate(onReject)));
 }
Exemple #6
0
 /// <summary>Adds a rejection handler.</summary>
 public Promise @catch(PromiseDelegate onReject)
 {
     return(then((PromiseDelegate)null, onReject));
 }
Exemple #7
0
 /// <summary>Provides methods to run when this promise completes.</summary>
 public Promise then(Promise onFulfil, PromiseDelegate onReject)
 {
     return(then(toDelegate(true, onFulfil), onReject));
 }
Exemple #8
0
 /// Set the invoker for this deferred
 public void Invoke(PromiseDelegate <TOk, TErr> invoker)
 {
     _invoker = invoker;
 }