Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(159)

Side by Side Diff: src/promise.js

Issue 314553002: Add v8::Promise::Then. (Closed) Base URL: https://chromium.googlesource.com/external/v8.git@master
Patch Set: Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/contexts.h ('k') | test/cctest/test-api.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 "use strict"; 5 "use strict";
6 6
7 // This file relies on the fact that the following declaration has been made 7 // This file relies on the fact that the following declaration has been made
8 // in runtime.js: 8 // in runtime.js:
9 // var $Object = global.Object 9 // var $Object = global.Object
10 // var $WeakMap = global.WeakMap 10 // var $WeakMap = global.WeakMap
11 11
12 // For bootstrapper. 12 // For bootstrapper.
13 13
14 var IsPromise; 14 var IsPromise;
15 var PromiseCreate; 15 var PromiseCreate;
16 var PromiseResolve; 16 var PromiseResolve;
17 var PromiseReject; 17 var PromiseReject;
18 var PromiseChain; 18 var PromiseChain;
19 var PromiseCatch; 19 var PromiseCatch;
20 var PromiseThen;
20 21
21 // mirror-debugger.js currently uses builtins.promiseStatus. It would be nice 22 // mirror-debugger.js currently uses builtins.promiseStatus. It would be nice
22 // if we could move these property names into the closure below. 23 // if we could move these property names into the closure below.
23 // TODO(jkummerow/rossberg/yangguo): Find a better solution. 24 // TODO(jkummerow/rossberg/yangguo): Find a better solution.
24 25
25 // Status values: 0 = pending, +1 = resolved, -1 = rejected 26 // Status values: 0 = pending, +1 = resolved, -1 = rejected
26 var promiseStatus = GLOBAL_PRIVATE("Promise#status"); 27 var promiseStatus = GLOBAL_PRIVATE("Promise#status");
27 var promiseValue = GLOBAL_PRIVATE("Promise#value"); 28 var promiseValue = GLOBAL_PRIVATE("Promise#value");
28 var promiseOnResolve = GLOBAL_PRIVATE("Promise#onResolve"); 29 var promiseOnResolve = GLOBAL_PRIVATE("Promise#onResolve");
29 var promiseOnReject = GLOBAL_PRIVATE("Promise#onReject"); 30 var promiseOnReject = GLOBAL_PRIVATE("Promise#onReject");
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 } 214 }
214 return deferred.promise; 215 return deferred.promise;
215 } 216 }
216 217
217 PromiseCatch = function PromiseCatch(onReject) { 218 PromiseCatch = function PromiseCatch(onReject) {
218 return this.then(UNDEFINED, onReject); 219 return this.then(UNDEFINED, onReject);
219 } 220 }
220 221
221 // Multi-unwrapped chaining with thenable coercion. 222 // Multi-unwrapped chaining with thenable coercion.
222 223
223 function PromiseThen(onResolve, onReject) { 224 PromiseThen = function PromiseThen(onResolve, onReject) {
224 onResolve = IS_SPEC_FUNCTION(onResolve) ? onResolve 225 onResolve = IS_SPEC_FUNCTION(onResolve) ? onResolve
225 : PromiseIdResolveHandler; 226 : PromiseIdResolveHandler;
226 onReject = IS_SPEC_FUNCTION(onReject) ? onReject 227 onReject = IS_SPEC_FUNCTION(onReject) ? onReject
227 : PromiseIdRejectHandler; 228 : PromiseIdRejectHandler;
228 var that = this; 229 var that = this;
229 var constructor = this.constructor; 230 var constructor = this.constructor;
230 return %_CallFunction( 231 return %_CallFunction(
231 this, 232 this,
232 function(x) { 233 function(x) {
233 x = PromiseCoerce(constructor, x); 234 x = PromiseCoerce(constructor, x);
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
307 "race", PromiseOne, 308 "race", PromiseOne,
308 "resolve", PromiseCast 309 "resolve", PromiseCast
309 ]); 310 ]);
310 InstallFunctions($Promise.prototype, DONT_ENUM, [ 311 InstallFunctions($Promise.prototype, DONT_ENUM, [
311 "chain", PromiseChain, 312 "chain", PromiseChain,
312 "then", PromiseThen, 313 "then", PromiseThen,
313 "catch", PromiseCatch 314 "catch", PromiseCatch
314 ]); 315 ]);
315 316
316 })(); 317 })();
OLDNEW
« no previous file with comments | « src/contexts.h ('k') | test/cctest/test-api.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698