Home | History | Annotate | Download | only in js

Lines Matching refs:promise

48 // CreateResolvingFunctions ( promise )
49 function CreateResolvingFunctions(promise) {
52 // ES#sec-promise-resolve-functions
53 // Promise Resolve Functions
57 ResolvePromise(promise, value);
60 // ES#sec-promise-reject-functions
61 // Promise Reject Functions
65 RejectPromise(promise, reason);
76 // ES#sec-promise-executor
77 // Promise ( executor )
78 var GlobalPromise = function Promise(executor) {
87 var promise = PromiseInit(%_NewObject(GlobalPromise, new.target));
88 var callbacks = CreateResolvingFunctions(promise);
91 if (debug_is_active) %DebugPushPromise(promise, Promise);
99 return promise;
104 function PromiseSet(promise, status, value) {
105 SET_PRIVATE(promise, promiseStateSymbol, status);
106 SET_PRIVATE(promise, promiseResultSymbol, value);
117 SET_PRIVATE(promise, promiseFulfillReactionsSymbol, UNDEFINED);
118 SET_PRIVATE(promise, promiseRejectReactionsSymbol, UNDEFINED);
129 SET_PRIVATE(promise, promiseDeferredReactionsSymbol, UNDEFINED);
131 return promise;
135 var promise = new GlobalPromise(promiseRawSymbol);
136 // If debug is active, notify about the newly created promise first.
137 if (DEBUG_IS_ACTIVE) PromiseSet(promise, kPending, UNDEFINED);
138 return PromiseSet(promise, status, value);
141 function PromiseInit(promise) {
142 return PromiseSet(promise, kPending, UNDEFINED);
145 function FulfillPromise(promise, status, value, promiseQueue) {
146 if (GET_PRIVATE(promise, promiseStateSymbol) === kPending) {
147 var tasks = GET_PRIVATE(promise, promiseQueue);
149 var tasks = GET_PRIVATE(promise, promiseQueue);
150 var deferreds = GET_PRIVATE(promise, promiseDeferredReactionsSymbol);
153 PromiseSet(promise, status, value);
160 if (debug_is_active) %DebugPushPromise(deferred.promise, PromiseHandle);
189 name = status === kFulfilled ? "Promise.resolve" : "Promise.reject";
194 function PromiseAttachCallbacks(promise, deferred, onResolve, onReject) {
196 GET_PRIVATE(promise, promiseFulfillReactionsSymbol);
198 SET_PRIVATE(promise, promiseFulfillReactionsSymbol, onResolve);
199 SET_PRIVATE(promise, promiseRejectReactionsSymbol, onReject);
200 SET_PRIVATE(promise, promiseDeferredReactionsSymbol, deferred);
204 var existingDeferred = GET_PRIVATE(promise, promiseDeferredReactionsSymbol);
208 rejectCallbacks.push(GET_PRIVATE(promise, promiseRejectReactionsSymbol),
213 SET_PRIVATE(promise, promiseFulfillReactionsSymbol, resolveCallbacks);
214 SET_PRIVATE(promise, promiseRejectReactionsSymbol, rejectCallbacks);
217 GET_PRIVATE(promise, promiseRejectReactionsSymbol).push(onReject, deferred);
240 // ES#sec-promise-resolve-functions
241 // Promise Resolve Functions, steps 6-13
242 function ResolvePromise(promise, resolution) {
243 if (resolution === promise) {
244 return RejectPromise(promise, MakeTypeError(kPromiseCyclic, resolution));
251 return RejectPromise(promise, e);
254 // Resolution is a native promise and if it's already resolved or
256 // reusing the value from the promise.
263 FulfillPromise(promise, kFulfilled, thenableValue,
265 SET_PRIVATE(promise, promiseHasHandlerSymbol, true);
270 // Promise has already been rejected, but had no handler.
274 RejectPromise(promise, thenableValue);
289 var callbacks = CreateResolvingFunctions(promise);
306 FulfillPromise(promise, kFulfilled, resolution, promiseFulfillReactionsSymbol);
310 // RejectPromise ( promise, reason )
311 function RejectPromise(promise, reason) {
312 // Check promise status to confirm that this reject has an effect.
314 if (GET_PRIVATE(promise, promiseStateSymbol) === kPending) {
317 !HAS_DEFINED_PRIVATE(promise, promiseHasHandlerSymbol)) {
318 %PromiseRejectEvent(promise, reason, debug_is_active);
321 FulfillPromise(promise, kRejected, reason, promiseRejectReactionsSymbol)
329 var promise = PromiseInit(new GlobalPromise(promiseRawSymbol));
330 var callbacks = CreateResolvingFunctions(promise);
332 promise: promise,
338 var result = {promise: UNDEFINED, resolve: UNDEFINED, reject: UNDEFINED };
339 result.promise = new C((resolve, reject) => {
364 // ES#sec-promise.reject
365 // Promise.reject ( x )
372 var promise = PromiseCreateAndSet(kRejected, r);
373 // The debug event for this would always be an uncaught promise reject,
375 %PromiseRejectEvent(promise, r, false);
376 return promise;
380 return promiseCapability.promise;
384 // Shortcut Promise.reject and Promise.resolve() implementations, used by
394 // ES#sec-promise.prototype.then
395 // Promise.prototype.then ( onFulfilled, onRejected )
417 // Promise has already been rejected, but had no handler.
425 // Mark this promise as having handler.
427 return deferred.promise;
437 // ES#sec-promise.prototype.catch
438 // Promise.prototype.catch ( onRejected )
445 // ES#sec-promise.resolve
446 // Promise.resolve ( x )
455 return promiseCapability.promise;
458 // ES#sec-promise.all
459 // Promise.all ( iterable )
462 throw MakeTypeError(kCalledOnNonObject, "Promise.all");
506 return deferred.promise;
509 // ES#sec-promise.race
510 // Promise.race ( iterable )
525 return deferred.promise;
535 if (PromiseHasUserDefinedRejectHandlerRecursive(combinedDeferred.promise)) {
538 } else if (PromiseHasUserDefinedRejectHandlerRecursive(deferred.promise)) {
544 function PromiseHasUserDefinedRejectHandlerRecursive(promise) {
545 var queue = GET_PRIVATE(promise, promiseRejectReactionsSymbol);
546 var deferreds = GET_PRIVATE(promise, promiseDeferredReactionsSymbol);
560 // Return whether the promise will be handled by a user-defined reject
561 // handler somewhere down the promise chain. For this, we do a depth-first
575 %AddNamedProperty(global, 'Promise', GlobalPromise, DONT_ENUM);
576 %AddNamedProperty(GlobalPromise.prototype, toStringTagSymbol, "Promise",
607 // promise without having to hold on to those closures forever.