Chromium Code Reviews| Index: dart/sdk/lib/async/deferred_load.dart |
| diff --git a/dart/sdk/lib/async/deferred_load.dart b/dart/sdk/lib/async/deferred_load.dart |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..bc99a4d354a352c4c74585b27ea173c286b93238 |
| --- /dev/null |
| +++ b/dart/sdk/lib/async/deferred_load.dart |
| @@ -0,0 +1,41 @@ |
| +// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| +// for details. All rights reserved. Use of this source code is governed by a |
| +// BSD-style license that can be found in the LICENSE file. |
| + |
| +/** |
| + * Indicates that loading of [libraryName] is deferred. |
| + * |
| + * Applies to library imports, when used as metadata. |
| + * |
| + * Example usage: |
| + * |
| + * [: |
| + * @lazy |
|
floitsch
2013/02/18 14:51:02
I would follow some convention (as Kasper suggeste
ahe
2013/02/18 15:20:28
As I implied to Kasper, I'm not keen on setting pr
|
| + * import 'foo.dart' as foo; |
| + * |
| + * const lazy = const DeferredLibrary('com.example.foo'); |
| + * |
| + * void main() { |
| + * foo.method(); // Throws a NoSuchMethodError, foo is not loaded yet. |
| + * lazy.load().then(onFooLoaded); |
| + * } |
| + * |
| + * void onFooLoaded(_) { |
| + * foo.method(); |
| + * } |
| + * :] |
| + */ |
| +class DeferredLibrary { |
| + final String libraryName; |
| + final String uri; |
| + |
| + const DeferredLibrary(this.libraryName, {this.uri}); |
| + |
| + /** |
| + * Ensure that [libraryName] has been loaded. |
| + * |
| + * The value of the returned future is true if this invocation of |
| + * [load] caused the library to be loaded. |
| + */ |
| + external Future<bool> load(); |
| +} |