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

Unified Diff: pkg/dev_compiler/lib/js/es6/dart_sdk.js

Issue 2653253002: Use microtasks in dart.async (Closed)
Patch Set: Created 3 years, 11 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:
Download patch
Index: pkg/dev_compiler/lib/js/es6/dart_sdk.js
diff --git a/pkg/dev_compiler/lib/js/es6/dart_sdk.js b/pkg/dev_compiler/lib/js/es6/dart_sdk.js
index 5f47f0bd058f4184f61ccafb151dc4fa250ba648..69f6bdaf152affabf4f78f1e1c96645b1f1bf5e8 100644
--- a/pkg/dev_compiler/lib/js/es6/dart_sdk.js
+++ b/pkg/dev_compiler/lib/js/es6/dart_sdk.js
@@ -1862,11 +1862,12 @@ dart.async = function(gen, T, ...args) {
if (ret.done) return ret.value;
let future = ret.value;
if (!dart.is(future, dart.getGenericClass(async.Future))) {
- future = async.Future.value(future);
+ var result = future;
+ future = async.Future.microtask(() => result);
}
return future.then(dart.dynamic)(onValue, {onError: onError});
}
- return dart.getGenericClass(async.Future)(T).new(function() {
+ return dart.getGenericClass(async.Future)(T).microtask(function() {
iter = gen.apply(null, args)[Symbol.iterator]();
return onValue();
});

Powered by Google App Engine
This is Rietveld 408576698