|
1 | 1 | import {global, isPresent} from 'angular2/src/core/facade/lang'; |
| 2 | +// We make sure promises are in a separate file so that we can use promises |
| 3 | +// without depending on rxjs. |
| 4 | +import {PromiseWrapper, Promise, PromiseCompleter} from 'angular2/src/core/facade/promise'; |
| 5 | +export {PromiseWrapper, Promise, PromiseCompleter} from 'angular2/src/core/facade/promise'; |
2 | 6 | // TODO(jeffbcross): use ES6 import once typings are available |
3 | 7 | var Subject = require('@reactivex/rxjs/dist/cjs/Subject'); |
4 | 8 |
|
5 | | -export {Promise}; |
6 | | - |
7 | | -export interface PromiseCompleter<R> { |
8 | | - promise: Promise<R>; |
9 | | - resolve: (value?: R | PromiseLike<R>) => void; |
10 | | - reject: (error?: any, stackTrace?: string) => void; |
11 | | -} |
12 | | - |
13 | | -export class PromiseWrapper { |
14 | | - static resolve<T>(obj: T): Promise<T> { return Promise.resolve(obj); } |
15 | | - |
16 | | - static reject(obj: any, _): Promise<any> { return Promise.reject(obj); } |
17 | | - |
18 | | - // Note: We can't rename this method into `catch`, as this is not a valid |
19 | | - // method name in Dart. |
20 | | - static catchError<T>(promise: Promise<T>, |
21 | | - onError: (error: any) => T | PromiseLike<T>): Promise<T> { |
22 | | - return promise.catch(onError); |
23 | | - } |
24 | | - |
25 | | - static all(promises: any[]): Promise<any> { |
26 | | - if (promises.length == 0) return Promise.resolve([]); |
27 | | - return Promise.all(promises); |
28 | | - } |
29 | | - |
30 | | - static then<T, U>(promise: Promise<T>, success: (value: T) => U | PromiseLike<U>, |
31 | | - rejection?: (error: any, stack?: any) => U | PromiseLike<U>): Promise<U> { |
32 | | - return promise.then(success, rejection); |
33 | | - } |
34 | | - |
35 | | - static wrap<T>(computation: () => T): Promise<T> { |
36 | | - return new Promise((res, rej) => { |
37 | | - try { |
38 | | - res(computation()); |
39 | | - } catch (e) { |
40 | | - rej(e); |
41 | | - } |
42 | | - }); |
43 | | - } |
44 | | - |
45 | | - static completer(): PromiseCompleter<any> { |
46 | | - var resolve; |
47 | | - var reject; |
48 | | - |
49 | | - var p = new Promise(function(res, rej) { |
50 | | - resolve = res; |
51 | | - reject = rej; |
52 | | - }); |
53 | | - |
54 | | - return {promise: p, resolve: resolve, reject: reject}; |
55 | | - } |
56 | | -} |
57 | | - |
58 | 9 | export namespace NodeJS { |
59 | 10 | export interface Timer {} |
60 | 11 | } |
|
0 commit comments