Advertisement
Guest User

Untitled

a guest
Nov 21st, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. type BetterPromiseCallback = (resolve: (res: any) => void, reject:(err: Error | null) => void) => void;
  2.  
  3. class BetterPromise<T> {
  4.     state: 'Pending' | 'Resolved' | 'Rejected';
  5.     result: T | null;
  6.     error: Error | null;
  7.     resolve(res: T|null): void {
  8.         this.state = 'Resolved';
  9.         this.result = res;
  10.         return;
  11.     }
  12.     reject(err: Error | null): void {
  13.         this.state = 'Rejected';
  14.         this.error = err;
  15.         return;
  16.     }
  17.     then(callback: (data: T|null, error: Error | null) =>any) {
  18.         return new BetterPromise((resolve,reject) => {
  19.             try {
  20.                 const result = callback(this.result, this.error);
  21.                 resolve(result);
  22.             } catch(error) {
  23.                 reject(error);
  24.             }
  25.         } )
  26.     }
  27.  
  28.     constructor(callback: BetterPromiseCallback) {
  29.         this.state = 'Pending';
  30.         callback(this.resolve, this.reject);
  31.     }
  32. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement